I думаю ответ нет, но я не могу найти окончательное утверждение. У меня следующая ситуация;Украсить функцию после ее определения?
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)
И что я действительно хочу, это что-то типа;
def my_function(function):
print "Hello %s" % function.__name__
for attr, value in dct.iteritems():
dct[attr] = functools.wraps(my_function, value)
, чтобы удалить запутанную оболочку decor_function. Можно ли применять декораторы только при определении функции?
Я не уверен, что вы здесь делаете. functools.wraps - это всего лишь небольшая утилита для копирования имен и атрибутов doc в декорированную функцию, она ничего не делает для изменения функциональности. Чего вы пытаетесь достичь? –
Декораторы - это просто регулярные функции + синтаксический сахар, который позволяет удобно их применять, но последнее необязательно. Итак, ответ «да». – bereal