Heim >Backend-Entwicklung >Python-Tutorial >Instanz- oder Klassenvariablen: Wo sollten Sie Variablen in Python deklarieren?
Variablen innerhalb und außerhalb von init
Der Ort, an dem Sie eine Variable innerhalb einer Python-Klasse deklarieren, kann erhebliche Auswirkungen auf deren Variablen haben Verhalten. Betrachten Sie die folgenden zwei Klassen:
<code class="python">class WithClass(): def __init__(self): self.value = "Bob" def my_func(self): print(self.value) class WithoutClass(): value = "Bob" def my_func(self): print(self.value)</code>
Klassenvariablen vs. Instanzvariablen
Der Hauptunterschied zwischen diesen beiden Klassen liegt darin, wo der Variablenwert deklariert wird. In WithClass wird es innerhalb der __init__-Methode deklariert und ist somit eine Instanzvariable. Dies bedeutet, dass jede Instanz von WithClass über eine eigene unabhängige Kopie des Wertattributs verfügt.
Andererseits wird in WithoutClass das Wertattribut außerhalb der __init__-Methode deklariert, wodurch es zu einer Klassenvariablen wird. Infolgedessen teilen sich alle Instanzen von WithoutClass dieselbe einzelne Instanz des Wertattributs.
Initialisierungsmethoden
Die __init__-Methode in WithClass dient jeweils als Initialisierer Objektinstanz. Beim Erstellen einer Instanz wird die Methode __init__ aufgerufen und dem Attribut self.value der Wert „Bob“ zugewiesen. Dieser Wert wird dann in der Instanz gespeichert und steht anderen Methoden innerhalb des Objekts zur Verfügung.
Konsequenzen
Die Entscheidung, wo eine Variable deklariert werden soll, kann Auswirkungen auf Sie haben Verhalten des Programms. Wenn jede Instanz einer Klasse ihren eigenen eindeutigen Wert für ein bestimmtes Attribut haben soll, sollte dieser innerhalb der __init__-Methode als Instanzvariable deklariert werden. Wenn alternativ alle Instanzen einer Klasse denselben Wert für ein Attribut haben sollen, kann es außerhalb der __init__-Methode als Klassenvariable deklariert werden.
Daher besteht die entscheidende Unterscheidung darin, ob die Variable so sein soll von allen Instanzen der Klasse gemeinsam genutzt werden (Klassenvariable) oder für jede einzelne Instanz eindeutig sein (Instanzvariable).
Das obige ist der detaillierte Inhalt vonInstanz- oder Klassenvariablen: Wo sollten Sie Variablen in Python deklarieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!