我想知道這種創建單例的方法是否正確。如何創建一個單例?
my_class.py
class MyClass(object):
def a_method(self):
print("Hello World")
...
MY_CLASS_SINGLETON = MyClass()
另一個模塊:
from my_class import MY_CLASS_SINGLETON
if __name__ == "__main__":
MY_CLASS_SINGLETON.a_method()
因此,此代碼爲我工作,但我納悶的是,如果它被用於任何其他之前,垃圾收集器可能會破壞MY_CLASS_SINGLETON
實例模塊,因爲最後它只是my_class.py
模塊中的一個臨時變量。
這不是一個「臨時變量」。這是您的模塊中定義的名稱。 Python也不會垃圾收集'MyClass',即使這也只是模塊中的命名對象。 – deceze
好吧,我不知道範圍。關於「單身人士」,我確實可以創造更多的實例,但在我的情況下,我不擔心這一點。謝謝你的澄清雖然:) 編輯:這個答案的一部分是不適合你,但爲@AnnetteC,抱歉的困惑。 –
[有沒有簡單,優雅的方式來定義Python中的單身?](http://stackoverflow.com/questions/31875/is-there-a-simple-elegant-way-to-define-singletons- in-python) – pat