Python Class Variables stellen eine struk­tu­rier­te Mög­lich­keit dar, Daten zwischen ver­schie­de­nen Instanzen einer Klasse zu teilen. Zudem wirken sich Än­de­run­gen an einer Klas­sen­va­ria­ble auf alle Instanzen der Klasse aus. Dadurch müssen sie nicht bei jeder In­stan­zi­ie­rung neu definiert werden.

Was sind Python Class Variables?

In Python erstellen wir Class Variables innerhalb einer Klasse. Anders als In­stanz­va­ria­blen, die spe­zi­fisch für jede Instanz einer Klasse sind, behalten Klas­sen­va­ria­blen denselben Wert für alle Instanzen bei. Diese Variablen werden in der Regel vor dem Kon­struk­tor definiert und sind für alle Instanzen der Klasse zu­gäng­lich.

Python Class Variables werden oft verwendet, um In­for­ma­tio­nen zu speichern, die für alle Instanzen einer Klasse gemeinsam sind, wie bei­spiels­wei­se Kon­fi­gu­ra­ti­ons­wer­te, Stan­dard­wer­te oder ge­mein­sa­me Zustände innerhalb einer Klas­sen­hier­ar­chie. Darüber hinaus können Sie Klas­sen­va­ria­blen nutzen, um Klas­sen­me­tho­den oder -attribute fest­zu­le­gen, die von allen Instanzen einer Klasse geteilt werden und so die Funk­tio­na­li­tät und Or­ga­ni­sa­ti­on des Codes ver­bes­sern.

Web­hos­ting
Das beste Web­hos­ting zum Spit­zen­preis
  • 3x schneller und 60 % günstiger
  • Maximale Ver­füg­bar­keit mit > 99.99 %
  • Nur bei IONOS: Bis zu 500 GB Spei­cher­platz inklusive

Das ist die Syntax von Python Class Variables

Python Class Variables werden innerhalb der Klas­sen­de­fi­ni­ti­on und außerhalb von Methoden erstellt.

class Car:
    total_cars = 0  # Class variable to track the total number of cars
    def __init__(self, brand, model):
        self.brand = brand  # Instance variable for the car brand
        self.model = model  # Instance variable for the car model
        Car.total_cars += 1  # Increment the total number of cars upon each instantiation
    def display_details(self):
        print(f"Brand: {self.brand}, Model: {self.model}")
# Creating instances of Car
car1 = Car("BMW", "X3")
car2 = Car("Audi", "A4")
# Accessing class variable and instance variables
print(f"Total number of cars: {Car.total_cars}")  # Output: 2
car1.display_details()  # Output: Brand: BMW, Model: X3
car2.display_details()  # Output: Brand: Audi, Model: A4
python

Innerhalb der Klasse Car de­fi­nie­ren wir die Klas­sen­va­ria­ble total_cars, um die Ge­samt­an­zahl der Autos zu verfolgen. Der Kon­struk­tor __init__ wird auf­ge­ru­fen, wenn eine neue Instanz der Klasse erzeugt wird. Bei jeder In­stan­zi­ie­rung werden die In­stanz­va­ria­blen brand und model gesetzt und die Klas­sen­va­ria­ble total_cars um 1 erhöht.

Durch den Aufruf der Methode display_details() geben wir die Details der je­wei­li­gen Auto-Instanzen aus. In einem f-String, einer Python-String-Format-Methode, greifen wir auf die Klas­sen­va­ria­ble total_cars zu, um die Ge­samt­an­zahl der er­stell­ten Autos an­zu­zei­gen.

Beispiele für die Anwendung von Python Class Variables

Für den sicheren Umgang mit Klas­sen­va­ria­blen in Python spielen vor allem der Zugriff, die Mo­di­fi­ka­ti­on und Vererbung eine Rolle.

Auf Klas­sen­va­ria­blen zugreifen

Der Zugriff auf Python Class Variables erfolgt über den Klas­sen­na­men oder die Instanz, gefolgt von einem Punkt und dem Va­ria­blen­na­men.

class MyClass:
    class_var = "This is a class variable"
# using class name to access class variable
print(MyClass.class_var)  # Output: This is a class variable
# using instance to access class variable
obj = MyClass()
print(obj.class_var)  # Output: This is a class variable
python

In Python können Sie Klas­sen­va­ria­blen an ver­schie­de­nen Stellen abrufen:

  • Im Kon­struk­tor: Die Klas­sen­va­ria­ble kann innerhalb des Kon­struk­tors entweder über das self-Schlüs­sel­wort oder den Klas­sen­na­men auf­ge­ru­fen werden.
  • In In­stanz­me­tho­den: Der Aufruf der Class Variable erfolgt innerhalb von In­stanz­me­tho­den entweder über das self-Schlüs­sel­wort oder den Klas­sen­na­men.
  • Außerhalb der Klasse: Außerhalb der Klasse kann auf die Class Variable entweder über die Ob­jekt­re­fe­renz oder über den Klas­sen­na­men zu­ge­grif­fen werden.

Klas­sen­va­ria­blen mo­di­fi­zie­ren

Python Class Variables können Sie direkt über den Klas­sen­na­men mo­di­fi­zie­ren. Wenn aber eine In­stanz­va­ria­ble denselben Namen hat wie eine Klas­sen­va­ria­ble und Sie versuchen, die Variable über die Instanz zu ändern, wird eine neue In­stanz­va­ria­ble ge­schaf­fen und die Klas­sen­va­ria­ble bleibt un­ver­än­dert.

class MyClass:
    class_var = "Original class variable"
obj = MyClass()
print(obj.class_var)  # Output: Original class variable
MyClass.class_var = "Modified class variable"
print(obj.class_var)  # Output: Modified class variable
python

In diesem Beispiel über­schrei­ben wir die Klas­sen­va­ria­ble class_var, indem wir ihr einen neuen Wert über die Klasse MyClass zuweisen. Die Änderung wird au­to­ma­tisch von der Instanz obj über­nom­men.

Class Variables und Vererbung

Durch Vererbung können ab­ge­lei­te­te Klassen auf die Klas­sen­va­ria­blen der Ba­sis­klas­se zugreifen und diese nutzen, ohne sie neu festlegen zu müssen.

class BaseClass:
    base_var = "Base variable"
class DerivedClass(BaseClass):
    pass
print(DerivedClass.base_var)  # Output: Base variable
python

Hier de­fi­nie­ren wir eine Ba­sis­klas­se BaseClass, die die Klas­sen­va­ria­ble base_var enthält. Die ab­ge­lei­te­te Klasse DerivedClass erbt von BaseClass. Durch die Vererbung kann DerivedClass auf die Klas­sen­va­ria­ble base_var der Ba­sis­klas­se zugreifen und sie ohne erneute De­fi­ni­ti­on verwenden.

Zum Hauptmenü