Heim >Backend-Entwicklung >Python-Tutorial >So implementieren Sie Singleton in Python
Singleton-Muster ist ein häufig verwendetes Software-Designmuster. Der Hauptzweck dieses Musters besteht darin, sicherzustellen, dass nur eine Instanz einer bestimmten Klasse vorhanden ist. Singleton-Objekte sind praktisch, wenn Sie möchten, dass nur eine Instanz einer bestimmten Klasse im gesamten System angezeigt wird.
In Python können wir verschiedene Methoden verwenden, um das Singleton-Muster zu implementieren (empfohlenes Lernen: Python-Video-Tutorial)
Tatsächlich handelt es sich bei Pythons Modul um einen natürlichen Singleton-Modus, da beim ersten Import des Moduls eine .pyc-Datei generiert wird. Beim zweiten Import wird die .pyc-Datei generiert direkt geladen werden statt Der Modulcode wird erneut ausgeführt. Daher müssen wir nur die relevanten Funktionen und Daten in einem Modul definieren, um ein Singleton-Objekt zu erhalten.
Verwenden Sie Dekoratoren
def Singleton(cls): _instance = {} def _singleton(*args, **kargs): if cls not in _instance: _instance[cls] = cls(*args, **kargs) return _instance[cls] return _singleton @Singleton class A(object): a = 1 def __init__(self, x=0): self.x = x a1 = A(2) a2 = A(3)
Verwenden Sie Klassen, Wenn wir einen Singleton implementieren, müssen wir die Thread-Sicherheit gewährleisten, die wir benötigen zum Hinzufügen einer internen Sperre
Wir wissen, dass wir beim Instanziieren eines Objekts zuerst die Methode __new__ der Klasse ausführen (wenn wir sie nicht schreiben, wird standardmäßig object.__new__ aufgerufen), um sie zu instanziieren Das Objekt; Führen Sie dann die __init__-Methode der Klasse aus, um das Objekt zu initialisieren. Auf dieser Grundlage können wir den Singleton-Modus
mithilfe von __metaclass__ (Metaklasse)
Weitere technische Artikel zum Thema Python finden Sie in der SpaltePython-Tutorial, um mehr darüber zu erfahren!
Das obige ist der detaillierte Inhalt vonSo implementieren Sie Singleton in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!