Hvordan opprette og bruke Python-klassevariabler
Python-klassevariabler er en strukturert måte å dele data mellom forskjellige instanser av en klasse. Hvis du gjør endringer i en klassevariabel, påvirker det alle instanser av klassen. Dette betyr at du ikke trenger å omdefinere dem hver gang de instansieres.
Hva er Python-klassevariabler?
I Python oppretter vi klassevariabler innenfor en klasse. I motsetning til instansvariabler, som er spesifikke for hver instans av en klasse, beholder klassevariabler samme verdi for alle instanser. Klassevariabler settes vanligvis opp før konstruktøren og kan nås av alle instanser av klassen.
Python-klassevariabler er nyttige for lagring av data som gjelder for alle forekomster av en klasse, for eksempel konfigurasjonsinnstillinger, standardverdier eller delte tilstander på tvers av en klassehierarki. Klassevariabler lar deg også definere klassemetoder eller attributter som alle forekomster har tilgang til, noe som forbedrer både funksjonaliteten og strukturen i koden din.
Hva er syntaksen for Python-klassevariabler?
Python-klassevariabler opprettes innenfor klassedefinisjonen og utenfor metodene.
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: A4pythonInnenfor klasse Car definerer vi klassevariabelen total_cars for å holde oversikt over det totale antallet biler. Konstruktøren __init__ kalles når en ny instans av klassen opprettes. Ved hver instansiering settes instansvariablene brand og model, og klassevariabelen total_cars økes med 1.
Ved å kalle opp metoden display_details() kan vi vise detaljene for de respektive bilinstansene. I en f-streng, en Python-strengformatmetode, kan vi få tilgang til klassevariabelen total_cars for å vise det totale antallet biler som er opprettet.
Eksempler på hvordan man bruker Python-klassevariabler
Tilgang, modifisering og arv spiller en viktig rolle i sikker håndtering av klassevariabler i Python.
Tilgang til klassevariabler
Python-klassevariabler tilgås via klassenavnet eller instansen, etterfulgt av en prikk og variabelnavnet.
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 få tilgang til klassevariabler på forskjellige steder:
- I konstruktøren: Du kan kalle opp klassevariabelen i konstruktøren ved å bruke enten nøkkelordet
selfeller klassens navn. - I instansmetoder: Du kan kalle opp klassevariabelen i instansmetoder ved å bruke enten nøkkelordet
selfeller klassenavnet. - Utenfor klassen: Du kan få tilgang til klassevariabelen utenfor klassen via objektreferansen eller ved å bruke klassens navn.
Endre klassevariabler
Python-klassevariabler kan endres direkte via klassens navn. Hvis en instansvariabel har samme navn som en klassevariabel og du prøver å endre variabelen via instansen, vil det imidlertid opprettes en ny instansvariabel, og klassevariabelen vil forbli uendret.
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 dette eksemplet overskrev vi klassevariabelen class_var ved å tildele den en ny verdi ved hjelp av klassen MyClass. Endringen blir deretter automatisk adoptert av obj.
Klassevariabler og arv
Arv gjør det mulig for avledede klasser å få tilgang til og bruke klassevariablene til baseklassen uten å måtte omdefinere dem.
class BaseClass:
base_var = "Base variable"
class DerivedClass(BaseClass):
pass
print(DerivedClass.base_var) # Output: Base variablepythonHer definerer vi en baseklasse BaseClass, som inneholder klassevariabelen base_var. Den avledede klassen DerivedClass arver fra BaseClass. Gjennom arv kan DerivedClass få tilgang til klassevariabelen base_var i baseklassen og bruke den uten å omdefinere den.