簡體   English   中英

裝飾器函數使用 *args 和 **kargs 作為其 __call__ 方法的參數,

[英]Decorator function using *args and **kargs as parameters for its __call__ method,

我目前正在使用一個裝飾函數,如果在裝飾器類中將某個 bool 設置為 True,該函數應該檢查函數的注釋。 我有點困惑的是裝飾器函數的__call__方法頭:

def __call__(self, *args, **kargs):

及其參數列表。

我知道它的參數*args**kargs用於提供給函數的參數,但是在我正在處理的問題中,我必須調用原始函數(這是從裝飾器創建的實例對象中的一個屬性名為_f類)。

我將如何使用提供給裝飾函數的參數來調用_f 我應該檢查args / kargs是否為空並self._f(args)空參數調用self._f(args) / self._f(kargs)嗎?

當你裝飾方法時:

class Foo:

    @someDecorator
    def my_method(self, x, y):
        ...

它實際上還不是一種方法; 這只是一個函數。 在你的裝飾器中,你這樣對待它:

def someDecorator(f):
    def _(*args, **kwargs):
        ...
        return f(*args, **kwargs)
    return _

_被調用時, self將包含在*args參數中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM