Kako ustvariti in uporabljati spremenljivke razreda Python
Spremenljivke razreda Python so strukturiran način izmenjave podatkov med različnimi primerki razreda. Če spremenite spremenljivko razreda, to vpliva na vse primerke razreda. To pomeni, da jih ni treba ponovno opredeliti vsakič, ko se instancirajo.
Kaj so spremenljivke razreda Python?
V Pythonu ustvarjamo spremenljivke razreda znotraj razreda. Za razliko od spremenljivk instance, ki so specifične za vsako instanco razreda, spremenljivke razreda ohranijo enako vrednost za vse instance. Spremenljivke razreda so običajno nastavljene pred konstruktorjem in so dostopne za vsako instanco razreda.
Spremenljivke razreda Python so uporabne za shranjevanje podatkov, ki veljajo za vse primere razreda, kot so nastavitve konfiguracije, privzete vrednosti ali skupna stanja v hierarhiji razredov. Spremenljivke razreda omogočajo tudi opredelitev metod ali atributov razreda, do katerih ima dostop vsak primer, kar izboljša funkcionalnost in strukturo vašega kode.
Kakšna je sintaksa spremenljivk razreda v Pythonu?
Spremenljivke razreda Python se ustvarijo znotraj definicije razreda in zunaj metod.
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: A4pythonV razredu Car definiramo razredno spremenljivko total_cars, da spremljamo skupno število avtomobilov. Konstruktor __init__ se pokliče, ko se ustvari nova instanca razreda. Pri vsaki instanci se nastavita spremenljivki instance brand in model, razredna spremenljivka total_cars pa se poveča za 1.
S klicem metode display_details() lahko prikažemo podrobnosti posameznih primerov avtomobilov. V f-nizu, metodi za oblikovanje nizov v Pythonu, lahko dostopamo do spremenljivke razreda total_cars, da prikažemo skupno število ustvarjenih avtomobilov.
Primeri uporabe spremenljivk razreda Python
Dostop, spreminjanje in dedovanje igrajo ključno vlogo pri varnem ravnanju s spremenljivkami razreda v Pythonu.
Dostop do spremenljivk razreda
Do spremenljivk razreda Python dostopamo prek imena razreda ali instance, ki mu sledi pika in ime spremenljivke.
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.pythonV Pythonu lahko dostopate do spremenljivk razreda na različnih mestih:
- V konstruktorju: V konstruktorju lahko pokličete spremenljivko razreda z uporabo ključne besede
selfali imena razreda. - V metodah instance: Razredno spremenljivko lahko pokličete v metodah instance z uporabo ključne besede
selfali imena razreda. - Zunaj razreda: Do spremenljivke razreda lahko dostopate zunaj razreda prek referenčnega objekta ali z imenom razreda.
Spreminjanje spremenljivk razreda
Spremenljivke razreda Python se lahko spreminjajo neposredno prek imena razreda. Če pa ima spremenljivka instance enako ime kot spremenljivka razreda in poskušate spremeniti spremenljivko prek instance, se ustvari nova spremenljivka instance, spremenljivka razreda pa ostane nespremenjena.
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 variablepythonV tem primeru smo prepisali spremenljivko razreda class_var tako, da smo ji dodelili novo vrednost z uporabo razreda MyClass. Sprememba se nato samodejno prevzame v primerku obj.
Razredne spremenljivke in dedovanje
Nasledstvo omogoča izpeljanim razredom dostop do spremenljivk osnovnega razreda in njihovo uporabo, ne da bi jih bilo treba ponovno definirati.
class BaseClass:
base_var = "Base variable"
class DerivedClass(BaseClass):
pass
print(DerivedClass.base_var) # Output: Base variablepythonTukaj definiramo osnovni razred BaseClass, ki vsebuje razredno spremenljivko base_var. Izpeljani razred DerivedClass deduje iz BaseClass. Prek dedovanja lahko DerivedClass dostopa do razredne spremenljivke base_var osnovnega razreda in jo uporablja, ne da bi jo ponovno definiral.