У меня есть следующий фрагмент кода:
def wrapper(func):
def wrapped(*args, **kwargs):
func.var = 0
return func(*args, **kwargs)
return wrapped
@wrapper
def f_out():
print(f_out.var)
Не могли бы вы объяснить мне, почему бег f_out()
повышает:
AttributeError: 'function' object has no attribute 'var'
РЕДАКТИРОВАТЬ
Мне пришлось уточнить, так как ответ дал мне альтернативу, но это не сработает для ситуации, которую я хочу.Учитывая следующий фрагмент:
def wrapper(func):
def wrapped(*args, **kwargs):
func.var = 0
ret = func(*args, **kwargs)
print(func.var)
return wrapped
@wrapper
def f_out():
f_out.var = 1
f_out()
print(f_out.var)
Я получаю в качестве вывода:
0
1
Почему это происходит?