这是python 2.5,它的GAE太不重要了。装饰python类方法,如何将实例传递给装饰器?
我有以下代码,我正在装饰bar中的foo()方法,使用dec_check类作为装饰器。
class dec_check(object):
def __init__(self, f):
self.func = f
def __call__(self):
print 'In dec_check.__init__()'
self.func()
class bar(object):
@dec_check
def foo(self):
print 'In bar.foo()'
b = bar()
b.foo()
当执行此我希望看到:
In dec_check.__init__()
In bar.foo()
但我发现了“TypeError: foo() takes exactly 1 argument (0 given)
”为.foo()
,作为一个对象的方法,采取自我作为参数。我猜问题是bar
的实例在我执行装饰器代码时并不存在。
那么如何将bar
的实例传递给装饰类?
将'f(self)'行更改为'return f(self)'将'foo'的返回值传回给调用者。 – j6m8 2017-07-29 15:32:44
中断描述符页面的链接。 – Apteryx 2017-08-11 15:56:40