即使我可以初始化一个类属性来执行此操作,出于可读性原因,我尝试使用装饰器来模拟类方法中的静态变量。它在标准函数中完美运行,但不适用于类方法。
我无法理解为什么会得到: AttributeError :'方法'对象没有属性' inc' 每次我运行以下代码,尽管打印行能够获得self.totofunc.inc的值。 它是self.totofunc.inc + = 1,触发错误。
有人可以帮助我理解吗?
提前致谢
def static(dict_var_val):
def staticf(f):
def decorated(*args, **kwargs):
f(*args, **kwargs)
for var,val in dict_var_val.items():
setattr(decorated, var, val)
return decorated
return staticf
class toto:
def __init__(self):
pass
@static({'inc':3})
def totofunc(self):
print("static : {}".format(self.totofunc.inc))
self.totofunc.inc += 1
inst=toto()
for i in range(1,3):
inst.totofunc()