Ich habe versucht, Python Dekorateure zu verstehen, und ich versuche, ein gleichwertiges Programm zu schreiben ein:Python Dekorateure - __call__ in Klasse
class myDecorator(object):
def __init__(self, f):
print ("inside myDecorator.__init__()")
f() # Prove that function definition has completed
def __call__(self):
print ("inside myDecorator.__call__()")
@myDecorator
def aFunction():
print ("inside aFunction()")
print ("Finished decorating aFunction()")
aFunction()
Das Problem ist, ich nicht verstehen, wie die __call__
Methode der Klasse ist aufgerufen werden, indem am Ende aFunction()
aufgerufen wird.
Wird aFunction()
durch myDecorator.__call__(aFunction)
ersetzt. Können Sie mir bitte helfen? Wie wäre ein gleichwertiges Programm ohne Dekorateure?
Danke!
um die args der Funktion zu akzeptieren, benutze def __call __ (selbst, * args, ** kwargs): und übergebe sie an f – theannouncer