我正在学习Python,并且一直在尝试实现一个单例类型的类作为测试。我现有的代码如下:
_Singleton__instance = None
class Singleton:
def __init__(self):
global __instance
if __instance == None:
self.name = "The one"
__instance = self
else:
self = __instance
这部分代码有一定效果,但是self = __instance部分似乎出现了问题。我在下面的解释器输出中包含了一些内容以证明这一点(上面的代码保存在singleton.py中):
>>> import singleton
>>> x = singleton.Singleton()
>>> x.name
'The one'
>>> singleton._Singleton__instance.name
'The one'
>>> y = singleton.Singleton()
>>> y.name
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: Singleton instance has no attribute 'name'
>>> type(y)
<type 'instance'>
>>> dir(y)
['__doc__', '__init__', '__module__']
我正在尝试的事情是否可能做到?如果不行,是否有其他方法可以实现?
欢迎任何建议。
谢谢。