I am going through the How to make a chain of function decorators? to understand decorator.
In the following example, we see that "method_to_decorate" is accessible to wrapper function because of closures.
But, I didn't understand how arguments self
and lie
are accessible to the wrapper function.
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?