Bei einer Python-Klasse, die nur einmal instanziiert wird, gibt es nur ein Objekt der Klasse. Ich habe mich gefragt, in welchen Fällen es sinnvoll ist, eine einzelne Klasseninstanz zu erstellen, anstatt stattdessen direkt mit der Klasse zu arbeiten.
Es gibt eine ähnliche Frage , aber sie hat einen anderen Schwerpunkt:
- Es geht darum, globale Variablen und Funktionen in einer Klasse und zu gruppieren
- Es ist nicht Python-spezifisch. Letzteres bedeutet, dass die Tatsache, dass (in Python) Klassen ebenfalls Objekte sind, nicht berücksichtigt wird.
AKTUALISIEREN:
In Python kann ich sowohl mit Klassen als auch mit Objekten Folgendes tun:
class A(object):
pass
A.some_state_var = True
# Then later
A.some_state_var = False
my_a = A()
my_a.some_state_var = True
# Then later
my_a.some_state_var = False
Ich sehe also nicht, wie es bei der Wahl zwischen einer Klasse und einer Instanz dieser Klasse um den Status geht (in Python). Ich kann mit beiden einen Zustand aufrechterhalten.
Darüber hinaus besteht die Motivation zum Erstellen meiner Klasse / Klasseninstanz nicht darin, eine Singleton-Anforderung durchzusetzen.
Außerdem geht es nicht so sehr darum, einen neuen Typ zu erstellen.
Die Motivation besteht darin, verwandten Code und Daten zu gruppieren und eine Schnittstelle dazu zu haben. Aus diesem Grund habe ich es zunächst als Klasse in einem Klassendiagramm modelliert. Erst als es um die Implementierung ging, fragte ich mich, ob ich diese Klasse instanziieren sollte oder nicht.