我需要了解如何访问在装饰器中传递给函数的变量。
让我用一个例子来解释,是否可以做这样的事情:
class test(object):
....
@DecoratorClass(myWrapper(self, x))
def myFunction(self, x):
print x
print self.y
在某些时候,会创建test-class
的实例,并从某处调用myFunction
。我需要将相同的参数传递给myWrapper
。
我希望这很清楚。
答案 0 :(得分:0)
装饰器用一个包装它的可调用函数替换该函数,因此可调用函数将传递与原始函数相同的参数。所以,例如:
def Decorator(original_function):
def replacement_function(x):
# You now have 'x' here... do what you want with it.
return replacement_function
@Decorator
def MyFunction(x):
# ...
请注意,您需要延迟构造“myWrapper”,直到执行该函数为止(因为在此之前您将没有函数参数)。