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

Wie unterscheiden sich Klassen- und Instanzvariablen in Python?

Patricia Arquette
Freigeben: 2024-10-29 07:18:30
Original
438 Leute haben es durchsucht

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>
Nach dem Login kopieren

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']
Nach dem Login kopieren

Beispiel 2: Instanzvariable

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

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']
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage