from functools import wraps
class SomeDecorator:
def __init__(self, value):
print("Decorator init called")
self.value = value
def __call__(self, func):
@wraps(func)
def inner(*args, **kwargs):
print("decorator value: ", self.value)
self.value += 10
return func(*args, **kwargs)
return inner
"____________________________________________________________"
@SomeDecorator(value=1)
def f1(*args, **kwargs):
return "f1"
@SomeDecorator(value=2)
def f2(*args, **kwargs):
return "f"
f1()
f2()
f1()
f2()
ZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCgpjbGFzcyBTb21lRGVjb3JhdG9yOgoJCglkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgoJCXByaW50KCJEZWNvcmF0b3IgaW5pdCBjYWxsZWQiKQoJCXNlbGYudmFsdWUgPSB2YWx1ZQoJCQoJZGVmIF9fY2FsbF9fKHNlbGYsIGZ1bmMpOgoJCUB3cmFwcyhmdW5jKQoJCWRlZiBpbm5lcigqYXJncywgKiprd2FyZ3MpOgoJCQlwcmludCgiZGVjb3JhdG9yIHZhbHVlOiAiLCBzZWxmLnZhbHVlKQoJCQlzZWxmLnZhbHVlICs9IDEwCgkJCXJldHVybiBmdW5jKCphcmdzLCAqKmt3YXJncykKCQlyZXR1cm4gaW5uZXIKCQkKIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyIKCkBTb21lRGVjb3JhdG9yKHZhbHVlPTEpCmRlZiBmMSgqYXJncywgKiprd2FyZ3MpOgoJcmV0dXJuICJmMSIKCQpAU29tZURlY29yYXRvcih2YWx1ZT0yKQpkZWYgZjIoKmFyZ3MsICoqa3dhcmdzKToKCXJldHVybiAiZiIKCmYxKCkKZjIoKQpmMSgpCmYyKCk=