Python静态类属性[重复]
Posted
技术标签:
【中文标题】Python静态类属性[重复]【英文标题】:Python Static Class attributes [duplicate] 【发布时间】:2014-12-07 10:26:45 【问题描述】:是否有可能在 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()
将显示 one 而不是 zero,因为它们共享相同的变量?
【问题讨论】:
当你尝试它会发生什么? 【参考方案1】:要使您的代码按预期工作,请使用myClass.__a
而不是self.__a
来访问变量。
def increase_A(self):
myClass.__a += 1
return
def get_A(self):
return myClass.__a
【讨论】:
【参考方案2】:它们从同一个变量开始。但是,当你这样做时
self.__a += 1
这会将对象的__a
重新绑定到值为1
的新对象。
它不会更改任何其他对象的__a
,因此代码将打印出0
。
【讨论】:
以上是关于Python静态类属性[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python之路-面向对象&继承和多态&类属性和实例属性&类方法和静态方法