我用以下解決方案來維持類實例的列表:https://stackoverflow.com/a/12102163如何在Python中始終使用同一個類的實例?
現在我想使用該列表,以確保始終有類只有一個實例。對類的更新初始化應該返回一個現有的實例。
我的代碼是:
class MyClass:
instances = []
def __init__(self):
if not MyClass.instances:
self.data=1234
else:
self = MyClass.instances[0]
所以:
>> a=MyClass()
>> a.data
1234
而B = MyClass的()應返回相同的實例作爲。這不起作用。我的代碼有什麼問題?
編輯:好吧,事實證明我正在尋找單身模式,但不能自己重新創建它。任何人都可以請解釋爲什麼我的代碼不起作用?
相關:有沒有一種簡單,優雅的方式來定義在Python單身?](http://stackoverflow.com/questions/31875/is-there-a-simple-elegant-way-to- python) – jfs
最後回答這個問題:你的代碼出了什麼問題,'self'只是'__init__'中的一個局部變量。賦值給它並不會改變調用返回到MySelf()的值。 –
使用單身人士(特別是在Pythong中使用單身人士)最近似乎... _discouraged_ ...請參閱http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons和http:/ /stackoverflow.com/questions/1318406/why-is-the-borg-pattern-better-than-the-singleton-pattern-in-python – BorrajaX