Python 更新实例方法中的类变量

Python 更新实例方法中的类变量,python,class,methods,instance,Python,Class,Methods,Instance,我试图更新方法(\u init\u)中的类变量(var1),但我给出了: class MyClass: var1 = 1 def update(value): MyClass.var1 += value def __init__(self,value): self.value = value MyClass.update(value) a = MyClass(1) 我这样做是因为我想通过调用print MyClass

我试图更新方法(\u init\u)中的类变量(var1),但我给出了:

class MyClass:
    var1 = 1

    def update(value):
        MyClass.var1 += value

    def __init__(self,value):
        self.value = value
        MyClass.update(value)

a = MyClass(1)
我这样做是因为我想通过调用print MyClass.var1轻松访问类中的所有变量,这会混淆类和实例

MyClass
是一个类,
a
是该类的一个实例。这里的错误是
update
是一个实例方法。要从
\uuuu init\uuuu
调用它,请使用以下任一选项:

class MyClass(object):
    pass

a = MyClass()

或者,使
update
成为类方法:


您需要使用
@classmethod
装饰器:

@classmethod
def update(cls, value):
    cls.var1 += value

哦,我明白了,我认为类方法是那些在其参数中没有self的方法。感谢您的澄清。className.var1+=1就是我要找的。我试着做self.var1+=1
self.update(value)
MyClass.update(self, value)
@classmethod
def update(cls, value):
    cls.var1 += value
$ cat t.py 
class MyClass:
    var1 = 1

    @classmethod
    def update(cls, value):
        cls.var1 += value

    def __init__(self,value):
        self.value = value
        self.update(value)

a = MyClass(1)
print MyClass.var1
$ python t.py 
2