用于类方法

时间:2018-03-31 15:50:56

标签: python variables methods static python-decorators

即使我可以初始化一个类属性来执行此操作,出于可读性原因,我尝试使用装饰器来模拟类方法中的静态变量。它在标准函数中完美运行,但不适用于类方法。

我无法理解为什么会得到: 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()

0 个答案:

没有答案