在Python中是否可以创建类的静态属性,该属性对于该类的所有实例(对象)都是相同的,它们都将使用对该属性的相同引用而不创建自己的属性。
例如:
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
所以,如果我有
myObject1 = myClass(1,2)
myObject2 = myClass(3,4)
myObject2.increase_A()
print myObject1.get_A()
会显示一个而不是零,他们会共享相同的变量吗?
答案 0 :(得分:3)
要使代码按照您的意图运行,请使用myClass.__a
来访问变量,而不是self.__a
。
def increase_A(self):
myClass.__a += 1
return
def get_A(self):
return myClass.__a
答案 1 :(得分:3)
他们从同一个变量开始。但是,当你这样做时
self.__a += 1
将对象的__a
重新绑定到值为1
的新对象。
它不会更改任何其他对象__a
,因此代码将打印出0
。