Python 更新实例方法中的类变量
我试图更新方法(\u init\u)中的类变量(var1),但我给出了: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
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