Hur man skapar och använder Python-klassvariabler
Python-klassvariabler är ett strukturerat sätt att dela data mellan olika instanser av en klass. Om du gör ändringar i en klassvariabel påverkar det alla instanser av klassen. Det innebär att du inte behöver omdefiniera dem varje gång de instansieras.
Vad är Python-klassvariabler?
I Python skapar vi klassvariabler inom en klass. Till skillnad från instansvariabler, som är specifika för varje instans av en klass, behåller klassvariabler samma värde för alla instanser. Klassvariabler konfigureras vanligtvis före konstruktorn och kan nås av alla instanser av klassen.
Python-klassvariabler är användbara för att lagra data som gäller alla instanser av en klass, till exempel konfigurationsinställningar, standardvärden eller delade tillstånd i en klasstruktur. Klassvariabler gör det också möjligt att definiera klassmetoder eller attribut som alla instanser kan komma åt, vilket förbättrar både funktionaliteten och strukturen i din kod.
Vad är syntaxen för Python-klassvariabler?
Python-klassvariabler skapas inom klassdefinitionen 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: A4pythonInom klass Car definierar vi klassvariabeln total_cars för att hålla reda på det totala antalet bilar. Konstruktorn __init__ anropas när en ny instans av klassen skapas. Vid varje instansiering sätts instansvariablerna brand och model och klassvariabeln total_cars ökas med 1.
Genom att anropa metoden display_details() kan vi visa detaljerna för respektive bilinstans. I en f-sträng, en Python-strängformateringsmetod, kan vi komma åt klassvariabeln total_cars för att visa det totala antalet skapade bilar.
Exempel på hur man använder Python-klassvariabler
Åtkomst, modifiering och arv spelar en viktig roll för säker hantering av klassvariabler i Python.
Åtkomst till klassvariabler
Python-klassvariabler nås via klassnamnet eller instansen, följt av en punkt och variabelnamnet.
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.pythonI Python kan du komma åt klassvariabler på olika ställen:
- I konstruktorn: Du kan anropa klassvariabeln i konstruktorn med hjälp av antingen nyckelordet
selfeller klassnamnet. - I instansmetoder: Du kan anropa klassvariabeln i instansmetoder med hjälp av antingen nyckelordet
selfeller klassnamnet. - Utanför klassen: Du kan komma åt klassvariabeln utanför klassen via objektreferensen eller genom att använda klassnamnet.
Ändra klassvariabler
Python-klassvariabler kan modifieras direkt via klassnamnet. Om en instansvariabel har samma namn som en klassvariabel och du försöker ändra variabeln via instansen, skapas dock en ny instansvariabel och klassvariabeln förblir oförändrad.
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 variablepythonI det här exemplet har vi överskrivit klassvariabeln class_var genom att tilldela den ett nytt värde med hjälp av klassen MyClass. Ändringen antas sedan automatiskt av instansen obj.
Klassvariabler och arv
Arv gör det möjligt för härledda klasser att komma åt och använda basklassens klassvariabler utan att behöva omdefiniera dem.
class BaseClass:
base_var = "Base variable"
class DerivedClass(BaseClass):
pass
print(DerivedClass.base_var) # Output: Base variablepythonHär definierar vi en basklass BaseClass, som innehåller klassvariabeln base_var. Den härledda klassen DerivedClass ärver från BaseClass. Genom arv kan DerivedClass komma åt klassvariabeln base_var i basklassen och använda den utan att omdefiniera den.

