To jest python 2.5, to jest GAE też nie, że to ma znaczenie.Zdobywając metody klasy Pythona, w jaki sposób przekazać instancję do dekoratora?
Mam następujący kod, jestem dekorowanie metody foo() w bar, przy użyciu klasy dec_check jako dekorator.
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()
Podczas wykonywania tego miałem nadzieję zobaczyć:
In dec_check.__init__()
In bar.foo()
Ale ja dostaję „TypeError: foo() takes exactly 1 argument (0 given)
” jako .foo()
, jako metoda obiektu, bierze siebie jako argument. Zgaduję, że problem polega na tym, że instancja bar
faktycznie nie istnieje, gdy wykonuję kod dekoratora.
Jak przekazać instancję klasy bar
do klasy dekoratora?
Zmień linię 'f (self) na' return f (self) ', aby przekazać zwrot' foo' z powrotem do osoby dzwoniącej. – j6m8
Zepsuty link do strony deskryptora. – Apteryx