Heim >Backend-Entwicklung >Python-Tutorial >Instanz- oder Klassenvariablen: Wo sollten Sie Variablen in Python deklarieren?

Instanz- oder Klassenvariablen: Wo sollten Sie Variablen in Python deklarieren?

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 13:33:02185Durchsuche

  Instance vs. Class Variables: Where Should You Declare Variables in Python?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn