Tôi đã cố gắng tìm hiểu trang trí Python và tôi đã cố gắng để viết một chương trình tương đương với này một:Python trang trí - __call__ trong lớp
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()
Vấn đề là tôi không hiểu thế nào là phương pháp __call__
của lớp là được gọi bằng cách gọi số aFunction()
cuối cùng.
Là aFunction()
được thay thế bằng myDecorator.__call__(aFunction)
. Bạn có thể giúp tôi được không? Làm thế nào sẽ là một chương trình tương đương mà không có trang trí?
Cảm ơn!
để chấp nhận hàm của args sử dụng def __call __ (self, * args, ** kwargs): và chuyển chúng thành f – theannouncer