Python-klassva­ri­ab­ler är ett struk­tu­re­rat sätt att dela data mellan olika instanser av en klass. Om du gör ändringar i en klassva­ri­a­bel påverkar det alla instanser av klassen. Det innebär att du inte behöver om­de­fi­ni­e­ra dem varje gång de in­stan­sie­ras.

Vad är Python-klassva­ri­ab­ler?

I Python skapar vi klassva­ri­ab­ler inom en klass. Till skillnad från in­st­an­sva­ri­ab­ler, som är specifika för varje instans av en klass, behåller klassva­ri­ab­ler samma värde för alla instanser. Klassva­ri­ab­ler kon­fi­gu­re­ras van­ligt­vis före kon­struk­torn och kan nås av alla instanser av klassen.

Python-klassva­ri­ab­ler är an­vänd­ba­ra för att lagra data som gäller alla instanser av en klass, till exempel kon­fi­gu­ra­tions­in­ställ­ning­ar, stan­dard­vär­den eller delade tillstånd i en klas­struk­tur. Klassva­ri­ab­ler gör det också möjligt att definiera klass­me­to­der eller attribut som alla instanser kan komma åt, vilket för­bätt­rar både funk­tio­na­li­te­ten och struk­tu­ren i din kod.

Vad är syntaxen för Python-klassva­ri­ab­ler?

Python-klassva­ri­ab­ler skapas inom klass­de­fi­ni­tio­nen och utanför metoderna.

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

Inom klass Car de­fi­ni­e­rar vi klassva­ri­a­beln total_cars för att hålla reda på det totala antalet bilar. Kon­struk­torn __init__ anropas när en ny instans av klassen skapas. Vid varje in­stan­sie­ring sätts in­st­an­sva­ri­ab­ler­na brand och model och klassva­ri­a­beln total_cars ökas med 1.

Genom att anropa metoden display_details() kan vi visa de­tal­jer­na för re­spek­ti­ve bilin­stans. I en f-sträng, en Python-sträng­for­ma­te­rings­me­tod, kan vi komma åt klassva­ri­a­beln total_cars för att visa det totala antalet skapade bilar.

Exempel på hur man använder Python-klassva­ri­ab­ler

Åtkomst, mo­di­fi­e­ring och arv spelar en viktig roll för säker hantering av klassva­ri­ab­ler i Python.

Åtkomst till klassva­ri­ab­ler

Python-klassva­ri­ab­ler nås via klass­nam­net eller instansen, följt av en punkt och va­ri­a­bel­nam­net.

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

I Python kan du komma åt klassva­ri­ab­ler på olika ställen:

  • I kon­struk­torn: Du kan anropa klassva­ri­a­beln i kon­struk­torn med hjälp av antingen nyc­kelor­det self eller klass­nam­net.
  • I in­stans­me­to­der: Du kan anropa klassva­ri­a­beln i in­stans­me­to­der med hjälp av antingen nyc­kelor­det self eller klass­nam­net.
  • Utanför klassen: Du kan komma åt klassva­ri­a­beln utanför klassen via ob­jekt­re­fe­ren­sen eller genom att använda klass­nam­net.

Ändra klassva­ri­ab­ler

Python-klassva­ri­ab­ler kan mo­di­fie­ras direkt via klass­nam­net. Om en in­st­an­sva­ri­a­bel har samma namn som en klassva­ri­a­bel och du försöker ändra variabeln via instansen, skapas dock en ny in­st­an­sva­ri­a­bel och klassva­ri­a­beln förblir oför­änd­rad.

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

I det här exemplet har vi över­skri­vit klassva­ri­a­beln class_var genom att tilldela den ett nytt värde med hjälp av klassen MyClass. Ändringen antas sedan au­to­ma­tiskt av instansen obj.

Klassva­ri­ab­ler och arv

Arv gör det möjligt för härledda klasser att komma åt och använda bas­klas­sens klassva­ri­ab­ler utan att behöva om­de­fi­ni­e­ra dem.

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

Här de­fi­ni­e­rar vi en basklass BaseClass, som in­ne­hål­ler klassva­ri­a­beln base_var. Den härledda klassen DerivedClass ärver från BaseClass. Genom arv kan DerivedClass komma åt klassva­ri­a­beln base_var i bas­klas­sen och använda den utan att om­de­fi­ni­e­ra den.

Gå till huvudmeny