是否有可能将修饰方法与参数传递给修饰器的__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