Python Static Class attributes
本问题已经有最佳答案,请猛点这里访问。
在python中,是否可能生成类的静态属性,该属性对于该类的所有实例(对象)都是相同的,它们都将使用对该属性的相同引用,而不创建自己的属性。
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 | class myClass: __a = 0 def __init__(self, b, c): self.b = b self.c = c def increase_A(self): self.__a += 1 return def get_A(self): return self.__a |
如果我有
1 2 3 4 5 6 | myObject1 = myClass(1,2) myObject2 = myClass(3,4) myObject2.increase_A() print myObject1.get_A() |
会显示1而不是0,因为它们共享相同的变量?
它们从同一个变量开始。但是,当你这样做的时候
1 | self.__a += 1 |
这会将对象的
它不会更改任何其他对象的
要使代码按您的意愿工作,请使用
1 2 3 4 5 6 | def increase_A(self): myClass.__a += 1 return def get_A(self): return myClass.__a |