Форум сайта python.su
Не понимаю почему теряется calls, когда я навешиваю декоратор other_deco? Ведь @wraps(func) должен прокидывать __dict__ и в частности атрибут функции calls.
Вопрос: как прокинуть атрибуты функции во внешние декораторы?
def other_deco(func): @wraps(func) def wrapper(): return func() return wrapper
def countcalls(func): @wraps(func) def wrapper(): wrapper.calls += 1 return func() wrapper.calls = 0 return wrapper
@other_deco @countcalls def f1(): pass f1() f1() f1() print(f1.calls) # 0 (хотя ожидаю 3)
Отредактировано anton.glukhenko (Март 28, 2020 23:32:36)
Офлайн
anton.glukhenkoВ документации не вижу никакого “прокидывания”. Поэтому вовсе не “должно”, чтобы в вашем понимании это ни значило.
должен прокидывать
anton.glukhenkoНикуда оно не теряется (оно же печатается!). Просто как вы и просили их два, по одному в каждой функции.
Не понимаю почему теряется calls
Офлайн