Wenn beim Versuch, auf eine statische Klassenvariable innerhalb einer Methode zuzugreifen, ein „NameError“ auftritt, muss die Syntax angepasst werden. So machen Sie es effektiv:
Im Kontext des angegebenen Codes:
<code class="python">class Foo(object): bar = 1 def bah(self): print(bar) f = Foo() f.bah()</code>
Der Fehler tritt auf, weil auf „bar“ als globale Variable innerhalb der „bah“-Methode zugegriffen wird. Um dieses Problem zu beheben, stehen zwei Optionen zur Verfügung:
1. Zugriff über Klassenattribut (statische Variable):
<code class="python">def bah(self): print(Foo.bar)</code>
Diese Syntax greift auf „bar“ als statische Variable der Klasse „Foo“ zu, ohne an eine bestimmte Instanz angehängt zu sein.
2. Zugriff über Instanzattribut:
<code class="python">def bah(self): print(self.bar)</code>
Diese Syntax greift auf „bar“ als Instanzvariable innerhalb der Methode zu. Durch Zuweisungen an „self.bar“ werden instanzspezifische Versionen von „bar“ für jede Instanz von „Foo“ erstellt.
Zusätzlicher Hinweis:
Alternativ Einstellung Das Klassenattribut als „self.bar“ wirkt sich auch auf alle Instanzen innerhalb der Klasse aus:
<code class="python">def bah(self): print(self.bar) self.bar = 2</code>
In diesem Fall wird bei nachfolgenden Aufrufen von „bah“ für andere Instanzen „2“ ausgegeben, da instanzspezifische Versionen von „Bar“ werden im Handumdrehen erstellt.
Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen, unter Berücksichtigung des Frageformats und der Konzentration auf das Kernthema: Direkt und klar: * Wie greife ich in Methoden in Python auf statische Klassenvariablen zu? * Warum bekomme ich ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!