Можно ли изменить функцию декоратора
def wrap(function):
def wrapper(*args, **kwargs):
print(function.__name__)
return function(*args, **kwargs)
return wrapper
сделать код
@wrap
@wrap
@wrap
def hello():
print("Hello, world!")
hello()
Распечатать
hello
hello
hello
Hello, world!
вместо
wrapper
wrapper
hello
Hello, world!
? Моя цель - составить несколько декораторов, каждый из которых полагается на имя функции.
functools.wraps?
Спасибо, работает! Вы хотите опубликовать ответ? Если нет, я отредактирую вопрос, включив в него ваше решение.
@Rastapopoulus В настоящее время мало что может сделать. Я в аэропорту и собираюсь сесть
Следующий код должен работать, хотя я не совсем уверен в ваших намерениях.
Во всяком случае, доверяя своей интуиции, я бы воздержался от подобных построений.
import functools
def wrap(function):
@functools.wraps(function)
def wrapper(*args, **kwargs):
print(function.__name__)
return function(*args, **kwargs)
return wrapper
@wrap
@wrap
@wrap
def hello():
print("Hello, world!")
hello()
functools.update_wrapper? functools