I think the answer is no, but I can't seem to find a definitive claim. I have the following situation;
def decorated_function(function):
@functools.wraps(function)
def my_function():
print "Hello %s" % function.__name__
return my_function
for attr, value in dct.iteritems():
dct[attr] = decorated_function(value)
And what I really want is something like;
def my_function(function):
print "Hello %s" % function.__name__
for attr, value in dct.iteritems():
dct[attr] = functools.wraps(my_function, value)
to remove the confusing shell of decorated_function. Are decorators only possible to apply when the function is defined?
You can decorate functions after they have been defined. In fact, function decorators are only syntactic sugar. For example, you can replace
@classmethod
@synchronized(lock)
def foo(cls):
pass
with
def foo(cls):
pass
foo = synchronized(lock)(foo)
foo = classmethod(foo)
See https://www.python.org/dev/peps/pep-0318/ for details.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With