【发布时间】:2015-09-18 15:30:46
【问题描述】:
假设我有一个定义装饰器的类
class Foo():
def decorate(param):
def wrapper(func):
def wrapped(*args, **kwargs):
# do something
return func(*args, **kwargs)
return wrapped
return wrapper
然后我决定在另一个类中调用该装饰器,如下所示:
class Bar():
foo = Foo()
param = something
@foo.decorate(param)
def func():
# do something
这会引发TypeError 异常:
TypeError: decorate() takes 1 positional argument but 2 were given
我无法理解这里出了什么问题。应用相同的装饰器但在同一类中定义 Bar 可以正常工作,但为什么它不适用于不同的类?
【问题讨论】: