我在Python中创建了一个单例模式,但如果我创建了一个UML,我会在图中返回一个两次__instance
变量的UML。
但我不知道为什么会这样。
#Singleton
__instance=None
def __new__(cls):
if HeatingStateOn.__instance is None:
HeatingStateOn.__instance = object.__new__(cls)
return HeatingStateOn.__instance
为什么会发生这种情况,我的代码中出现了什么错误?
更新
我运行以下单元测试,结果为绿色。
def test_heatingStateOn_singleton(self):
a = HeatingStateOn()
b = HeatingStateOn()
self.assertEqual(a, b)
答案 0 :(得分:0)
我测试了你的代码,并检查了实例的id,实际上只有一个__instance。请检查以下代码:
class HeatingStateOn:
__instance = None
def __new__(cls):
if HeatingStateOn.__instance is None:
HeatingStateOn.__instance = object.__new__(cls)
return HeatingStateOn.__instance
a = HeatingStateOn()
b = HeatingStateOn()
print(id(a))
print(id(b))
a的id与b的id相同,这意味着a和b共享相同的内存。