我正在尝试创建一个asingleton类,每次调用该类时,该类都会向“a”添加1:
class Singleton(object):
_instance = None
a=0
def __new__(self):
if not self._instance:
self._instance = super(Singleton,self).__new__(self)
self.a+=1
return self._instance
x=Singleton()
x.a=5
print (x.a)
y=Singleton()
print (y.a)
z=Singleton()
print (z.a)
您的线路:
将新的属性指定给实例,屏蔽class属性。如果没有这个赋值,实例就没有属性
a
,而是找到类属性Singleton.a
。你知道吗同时,您的
__new__
函数继续更改Singleton.a
类属性,但是当您访问a
实例属性时,不再参考它。你知道吗如果改为更改class属性,代码将正常工作:
或者您给了
Singleton
类一个属性,该属性将对a
的访问委托给class属性:或者在实例而不是类上设置属性:
反正是单身。你知道吗
相关问题 更多 >
编程相关推荐