Klassen- und Instanzattribute: Variablen innerhalb und außerhalb von __init__()
Bei der objektorientierten Programmierung spielen Klassenattribute und Instanzattribute eine entscheidende Rolle Rollen. Aber was ist der Unterschied zwischen der Platzierung einer Variablen innerhalb und außerhalb der __init__()-Methode? Lassen Sie uns diese Unterscheidung genauer untersuchen.
Betrachten Sie die angegebenen Codeausschnitte:
<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>
Variablen außerhalb von __init__()
Variablen, die außerhalb von __init__() definiert sind gehören zur Klasse. Sie gelten für alle aus dieser Klasse erstellten Instanzen. Zum Beispiel in der WithoutClass-Klasse:
<code class="python">WithoutClass.value = "Bob"</code>
Der Zugriff auf diese Variable über eine beliebige Instanz der WithoutClass-Klasse gibt denselben Wert „Bob“ zurück.
Variablen in __init__()
Im Gegensatz dazu gehören in __init__() definierte Variablen mit dem Präfix self. zu jedem einzelnen Objekt. Wenn Sie eine Variable in __init__() festlegen, wird sie zu einem für dieses Objekt spezifischen Instanzattribut.
<code class="python">WithClass().value = "Alice" # Unique to this instance</code>
Der Zugriff auf dieselbe Variable von einer anderen Instanz der WithClass-Klasse führt zu einem anderen Wert:
<code class="python">WithClass().value = "Bob" # Unique to this instance</code>
Auswirkungen
Die Wahl, wo eine Variable deklariert werden soll, hat Auswirkungen auf ihr Verhalten.
Das obige ist der detaillierte Inhalt vonHier sind einige fragenbasierte Titel, die zu Ihrem Artikel passen: * Klassen- und Instanzattribute: Wo sollten Sie Variablen in Python definieren? * Objektorientierte Python-Programmierung: Wann man Class Attri verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!