有人可以告诉我为什么作为单例模式这是不正确的:
class preSingleton(object):
def __call__(self):
return self
singleton = preSingleton()
# singleton is actually the singleton
a = singleton()
b = singleton()
print a==b
a.var_in_a = 100
b.var_in_b = 'hello'
print a.var_in_b
print b.var_in_a
编辑:打印上述代码:
^{pr2}$非常感谢
第二部分
也许这样更好?在
class Singleton(object):
def __new__(cls):
return cls
a = Singleton()
b = Singleton()
print a == b
a.var_in_a = 100
b.var_in_b = 'hello'
print a.var_in_b
print b.var_in_a
编辑:打印上述代码:
^{pr2}$再次感谢。在
因为这不是单身汉。单身汉必须是单身,你的对象不是单身。在
在Python中,单例实际上非常简单。诀窍是让模块为您进行封装,而不是生成类。在
如果你想假装这个模块是一个类的一个实例,你可以做如下的事情
这实际上是柏格人的模式。共享状态的多个对象。在
这并不是说它有任何问题,而且对于大多数用例,如果不是所有用例,它在功能上等同于单例实例,但是既然您问了。。。在
编辑:当然,由于它们是Borg对象,每个实例都会占用更多的内存,因此如果你要创建大量的实例,这将对资源使用产生影响。在
相关问题 更多 >
编程相关推荐