Bei der Arbeit mit Klassen in Python kann es vorkommen, dass Sie innerhalb von Methoden auf Klassenvariablen zugreifen müssen. Allerdings kann ein einfacher Verweis auf die Variable innerhalb der Methode zu einem NameError führen.
Das Problem
Beachten Sie den folgenden Codeausschnitt:
<code class="python">class Foo(object): bar = 1 def bah(self): print(bar)</code>
Wenn Sie versuchen, diesen Code auszuführen, werden Sie auf einen Namensfehler stoßen: Der globale Name „bar“ ist nicht definiert. Dies liegt daran, dass die Variable bar eine Klassenvariable ist und die Methode bah nicht direkt darauf zugreifen kann.
Die Lösung
Um auf Klassenvariablen innerhalb von Methoden zuzugreifen, Es gibt zwei Optionen:
Wenn Sie beabsichtigen, die Klassenvariable zu ändern, verwenden Sie Foo.bar; andernfalls verwenden Sie self.bar.
Beispiel
Refactoring des Code-Snippets mit dem richtigen Ansatz:
<code class="python">class Foo(object): bar = 1 def bah(self): print(self.bar) # Access the instance variable f = Foo() f.bah() # Prints 1</code>
Dieser Code gibt 1 aus, Zugriff auf die Instanzvariable. Wenn Sie auf die Klassenvariable zugreifen möchten, ändern Sie einfach self.bar in der print-Anweisung in Foo.bar.
Das obige ist der detaillierte Inhalt vonWie greife ich über Methoden in Python auf Klassenvariablen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!