Heim >Backend-Entwicklung >Python-Tutorial >Wie unterscheiden sich Klassen- und Instanzvariablen in Python?

Wie unterscheiden sich Klassen- und Instanzvariablen in Python?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-29 07:18:30423Durchsuche

How do Class and Instance Variables Differ in Python?

Klassen- und Instanzvariablen in Python verstehen

Eines der Schlüsselkonzepte in der objektorientierten Programmierung ist die Unterscheidung zwischen Klassen- und Instanzvariablen. In Python spielen diese Variablen eine entscheidende Rolle bei der Verwaltung von Daten innerhalb einer Klasse. Je nachdem, wie sie definiert sind, kann es jedoch zu Verwirrung hinsichtlich ihres Verhaltens kommen.

Klassen- vs. Instanzvariablen

  • Klassenvariablen: Variablen, die innerhalb einer Klasse, aber außerhalb einer Methode deklariert werden, werden als Klassenvariablen bezeichnet. Sie werden von allen Instanzen der Klasse gemeinsam genutzt, unabhängig von ihrem Status.
  • Instanzvariablen: Variablen, die innerhalb einer Methode einer Klasse unter Verwendung des self deklariert werden Schlüsselwort, werden als Instanzvariablen bezeichnet. Sie sind spezifisch für jede Instanz der Klasse.

Beispiel 1: Klassenvariable

<code class="python">class testClass():
    list = []
    def __init__(self):
        self.list.append('thing')</code>

In diesem Beispiel die Liste Variable ist eine Klassenvariable, da sie außerhalb einer Methode definiert wird. Wenn eine neue Instanz der Klasse erstellt wird, greift sie daher auf dieselbe list-Variable und deren Inhalte zu. Somit lautet die Ausgabe für beide Instanzen (p und f):

['thing']
['thing', 'thing']

Beispiel 2: Instanzvariable

<code class="python">class testClass():
    def __init__(self):
        self.list = []
        self.list.append('thing')</code>

In diesem Beispiel wird die Variable list innerhalb der Methode __init__() unter Verwendung von self definiert. Daher wird sie zu einer Instanzvariablen. Jede Instanz verfügt über eine eigene separate list-Variable. Somit lautet die Ausgabe für jede Instanz:

['thing']
['thing']

Benennungsauflösung für Klassen- und Instanzvariablen

Der Schlüssel zum Verständnis des Verhaltens von Klassen- und Instanzvariablen liegt in wie Python Namen auflöst. Wenn Sie auf self.list zugreifen, prüft Python zunächst, ob in der Instanz selbst ein list-Attribut vorhanden ist. Wenn nicht gefunden, wird die Klassendefinition überprüft.

Dies erklärt, warum list im ersten Beispiel als Klassenvariable behandelt wird, während es im zweiten Beispiel zu einer Instanz wird Variable.

Zusammenfassend bestimmt die Platzierung von Variablendefinitionen innerhalb einer Klasse oder Methode, ob es sich um Klassen- oder Instanzvariablen handelt. Das Verständnis dieser Unterscheidung ist entscheidend für die effektive Verwaltung von Daten in objektorientiertem Python-Code.

Das obige ist der detaillierte Inhalt vonWie unterscheiden sich Klassen- und Instanzvariablen in Python?. 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