Это Python 2.5, и он GAE тоже, но это не так важно.
У меня есть следующий код. Я украшаю метод 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()
, будучи методом объекта, принимает в качестве аргумента self. Я предполагаю, что проблема в том, что экземпляр bar
на самом деле не существует, когда я выполняю код декоратора.
Итак, как мне передать экземпляр bar
в класс декоратора?