Ich fragte mich, ob dieser Ansatz für die Erstellung eines Singleton korrekt war.Wie erstelle ich ein Singleton?
my_class.py
class MyClass(object):
def a_method(self):
print("Hello World")
...
MY_CLASS_SINGLETON = MyClass()
ein weiteres Modul:
from my_class import MY_CLASS_SINGLETON
if __name__ == "__main__":
MY_CLASS_SINGLETON.a_method()
Also dieser Code arbeitet für mich, aber mein Wunder, wenn der Garbage Collector die MY_CLASS_SINGLETON
Instanz zerstören könnte, bevor es von einem anderen verwendet wird, Modul, als am Ende ist es nur eine temporäre Variable im Modul.
Es ist keine "temporäre Variable". Es ist ein Name, der in Ihrem Modul definiert ist. Python wird auch nicht Müll sammeln 'MyClass', obwohl das auch nur ein benanntes Objekt in Ihrem Modul ist. – deceze
Ok, ich wusste nichts über den Umfang. Und über den "Singleton" ist es wahr, dass ich mehr Instanzen erstellen kann, aber in meinem Fall mache ich mir darüber keine Sorgen. Danke für die Klärung aber :) EDIT: Teil dieser Antwort war nicht für Sie, sondern für @AnnetteC, tut mir leid für die Konfuziation. –
Mögliches Duplikat von [Gibt es eine einfache, elegante Möglichkeit, Singletons in Python zu definieren?] (Http://stackoverflow.com/questions/31875/is-there-a-simple-elegant-way-to-define-singletons- In-Python) – pat