我正在阅读如何制作功能装饰器链? 了解装饰器。
在下面的示例中,我们看到由于闭包,包装函数可以访问“method_to_decorate”。但是,我不明白包装函数如何访问参数self
和lie
可访问性。
def method_friendly_decorator(method_to_decorate):
def wrapper(self, lie):
lie = lie - 3 # very friendly, decrease age even more :-)
return method_to_decorate(self, lie)
return wrapper
class Lucy(object):
def __init__(self):
self.age = 32
@method_friendly_decorator
def sayYourAge(self, lie):
print "I am %s, what did you think?" % (self.age + lie)
l = Lucy()
l.sayYourAge(-3)
#outputs: I am 26, what did you think?