是否有可能將修飾方法與參數傳遞給修飾器的__init__
?將參數傳遞給裝飾器?
一個簡單的裝飾和使用例
class Decorator(object):
def __init__(self, *args):
print args
def __call__(self, func): # yep the method still have to be callable
return func
@Decorator
def foo():
pass
沒有參數裝飾器將通過該方法作爲參數
$ python foo.py
(<function foo at 0x7fefd7ac1b90>,)
當我添加參數給裝飾
@Decorator(1, 2, 3)
def foo():
pass
它結果lts in
$ python test.py
(1, 2, 3)
正如您所看到的,現在在傳遞的參數中缺少方法。
用'@Decorator()'嘗試一個例子,也許它會點擊。 –
有一個很好的描述[這裏](http://stackoverflow.com/a/1594484/674039)(堆棧中的最佳答案之一,在我看來) – wim
'@ Decorator'基本上是指'foo = Decorator(foo )'。因此'@Decorator(1,2,3)'意味着'foo = Decorator(1,2,3)(foo)'; 'Decorator(1,2,3)'應該返回一個裝飾器*。 – RemcoGerlich