Heim  >  Artikel  >  Backend-Entwicklung  >  Wie greife ich über Methoden in Python auf Klassenvariablen zu?

Wie greife ich über Methoden in Python auf Klassenvariablen zu?

DDD
DDDOriginal
2024-10-26 17:24:02933Durchsuche

How to Access Class Variables from Methods in Python?

Zugriff auf Klassenvariablen in Methoden

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:

  • self.bar: Dies verweist auf die Instanzvariable, die für jede Instanz der Klasse spezifisch ist.
  • Foo .bar: Dies verweist auf die Klassenvariable, die von allen Instanzen der Klasse gemeinsam genutzt wird.

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!

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