Spre­men­ljiv­ke razreda Python so struk­tu­ri­ran način izmenjave podatkov med raz­lič­ni­mi primerki razreda. Če spre­me­ni­te spre­men­ljiv­ko razreda, to vpliva na vse primerke razreda. To pomeni, da jih ni treba ponovno opre­de­li­ti vsakič, ko se in­stan­ci­ra­jo.

Kaj so spre­men­ljiv­ke razreda Python?

V Pythonu ustvar­ja­mo spre­men­ljiv­ke razreda znotraj razreda. Za razliko od spre­men­ljivk instance, ki so spe­ci­fič­ne za vsako instanco razreda, spre­men­ljiv­ke razreda ohranijo enako vrednost za vse instance. Spre­men­ljiv­ke razreda so običajno na­sta­vlje­ne pred kon­struk­tor­jem in so dostopne za vsako instanco razreda.

Spre­men­ljiv­ke razreda Python so uporabne za shra­nje­va­nje podatkov, ki veljajo za vse primere razreda, kot so na­sta­vi­tve kon­fi­gu­ra­ci­je, privzete vrednosti ali skupna stanja v hi­e­rar­hi­ji razredov. Spre­men­ljiv­ke razreda omogočajo tudi opre­de­li­tev metod ali atributov razreda, do katerih ima dostop vsak primer, kar izboljša funk­ci­o­nal­nost in strukturo vašega kode.

Kakšna je sintaksa spre­men­ljivk razreda v Pythonu?

Spre­men­ljiv­ke razreda Python se ustvarijo znotraj de­fi­ni­ci­je 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: A4
python

V razredu Car de­fi­ni­ra­mo razredno spre­men­ljiv­ko total_cars, da spre­mlja­mo skupno število av­to­mo­bi­lov. Kon­struk­tor __init__ se pokliče, ko se ustvari nova instanca razreda. Pri vsaki instanci se nastavita spre­men­ljiv­ki instance brand in model, razredna spre­men­ljiv­ka total_cars pa se poveča za 1.

S klicem metode display_details() lahko prikažemo po­drob­no­sti po­sa­me­znih primerov av­to­mo­bi­lov. V f-nizu, metodi za obli­ko­va­nje nizov v Pythonu, lahko dostopamo do spre­men­ljiv­ke razreda total_cars, da prikažemo skupno število ustvar­je­nih av­to­mo­bi­lov.

Primeri uporabe spre­men­ljivk razreda Python

Dostop, spre­mi­nja­nje in dedovanje igrajo ključno vlogo pri varnem ravnanju s spre­men­ljiv­ka­mi razreda v Pythonu.

Dostop do spre­men­ljivk razreda

Do spre­men­ljivk razreda Python dostopamo prek imena razreda ali instance, ki mu sledi pika in ime spre­men­ljiv­ke.

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

V Pythonu lahko dostopate do spre­men­ljivk razreda na različnih mestih:

  • V kon­struk­tor­ju: V kon­struk­tor­ju lahko pokličete spre­men­ljiv­ko razreda z uporabo ključne besede self ali imena razreda.
  • V metodah instance: Razredno spre­men­ljiv­ko lahko pokličete v metodah instance z uporabo ključne besede self ali imena razreda.
  • Zunaj razreda: Do spre­men­ljiv­ke razreda lahko dostopate zunaj razreda prek re­fe­renč­ne­ga objekta ali z imenom razreda.

Spre­mi­nja­nje spre­men­ljivk razreda

Spre­men­ljiv­ke razreda Python se lahko spre­mi­nja­jo ne­po­sre­dno prek imena razreda. Če pa ima spre­men­ljiv­ka instance enako ime kot spre­men­ljiv­ka razreda in poskušate spre­me­ni­ti spre­men­ljiv­ko prek instance, se ustvari nova spre­men­ljiv­ka instance, spre­men­ljiv­ka razreda pa ostane ne­spre­me­nje­na.

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

V tem primeru smo prepisali spre­men­ljiv­ko razreda class_var tako, da smo ji dodelili novo vrednost z uporabo razreda MyClass. Sprememba se nato samodejno prevzame v primerku obj.

Razredne spre­men­ljiv­ke in dedovanje

Na­sled­stvo omogoča iz­pe­lja­nim razredom dostop do spre­men­ljivk osnovnega razreda in njihovo uporabo, ne da bi jih bilo treba ponovno de­fi­ni­ra­ti.

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

Tukaj de­fi­ni­ra­mo osnovni razred BaseClass, ki vsebuje razredno spre­men­ljiv­ko base_var. Izpeljani razred DerivedClass deduje iz BaseClass. Prek dedovanja lahko DerivedClass dostopa do razredne spre­men­ljiv­ke base_var osnovnega razreda in jo uporablja, ne da bi jo ponovno definiral.

Go to Main Menu