Pythoni klassi muutujad on struk­tu­ree­ri­tud viis andmete ja­ga­miseks klassi erinevate ins­tant­side vahel. Kui teete muudatusi klassi muutujas, mõjutab see kõiki klassi instantsi. See tähendab, et te ei pea neid iga kord uuesti mää­rat­lema, kui need ins­tant­si­takse.

Mis on Pythoni klassi muutujad?

Pythonis loome klassi muutujad klassi sees. Erinevalt instantsi muu­tu­ja­test, mis on spet­sii­fi­li­sed iga klassi instantsi jaoks, säi­li­ta­vad klassi muutujad sama väärtuse kõikide ins­tant­side jaoks. Klas­si­muu­tu­jad seatakse ta­va­li­selt enne konst­ruk­to­rit ja neile on juur­de­pääs igal klassi ins­tant­sil.

Pythoni klassi muutujad on kasulikud klassi kõikidele ins­tant­si­dele kehtivate andmete, näiteks kon­fi­gu­rat­sioo­ni­sea­dete, vaikimisi väärtuste või klas­si­hierar­hia ühiste sei­sun­dite sal­ves­ta­miseks. Klas­si­muu­tu­jad või­mal­da­vad teil mää­rat­leda ka klas­si­mee­to­deid või atribuute, millele iga instants pääseb ligi, pa­ran­da­des nii koodi funkt­sio­naal­sust kui ka struk­tuuri.

Mis on Python klassi muutujate süntaks?

Pythoni klassi muutujad luuakse klassi mää­rat­luses ja meetodite väl­jas­pool.

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

Klassis Car mää­rat­leme klas­si­muu­tuja total_cars, et jälgida autode koguarvu. Konst­ruk­tor __init__ kut­su­takse välja, kui luuakse klassi uus instants. Iga instantsi loomisel mää­ra­takse ins­tant­si­muu­tu­jad brand ja model ning klas­si­muu­tuja total_cars suu­ren­da­takse 1 võrra.

Meetodit display_details() kutsudes saame kuvada vastavate au­to­ins­tant­side ük­sik­as­jad. F-stringis, mis on Pythoni stringi vor­min­gu­mee­tod, saame juur­de­pääsu klassi muutujale total_cars, et kuvada loodud autode koguarv.

Näited Python klassi muutujate ka­su­ta­mise kohta

Juur­de­pääs, muutmine ja pärimine mängivad olulist rolli klassi muutujate tur­va­li­ses kä­sit­le­mises Pythonis.

Klassi muu­tu­ja­tele juur­de­pääs

Python klassi muu­tu­ja­tele pääseb ligi klassi nime või instantsi kaudu, millele järgneb punkt ja muutuja nimi.

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

Pythonis on klassi muu­tu­ja­tele juur­de­pääs mitmes kohas:

  • Konst­ruk­to­ris: Konst­ruk­to­ris saab klassi muutujat kutsuda kas märksõna self või klassi nime abil.
  • Ins­tant­si­mee­to­di­tes: klassi muutujat saab ins­tant­si­mee­to­di­tes kutsuda kas märksõna self või klassi nime abil.
  • Klassist väl­jas­pool: Klas­si­muu­tu­jale pääseb juurde klassist väl­jas­pool objekti viite või klassi nime abil.

Klassi muutujate muutmine

Pythoni klassi muutujaid saab muuta otse klassi nime kaudu. Kui aga instantsi muutuja on sama nimega kui klassi muutuja ja proovite muutujat instantsi kaudu muuta, luuakse uus instantsi muutuja ja klassi muutuja jääb muu­tu­ma­tuks.

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

Selles näites kir­ju­ta­sime klassi muutuja class_var üle, omistades sellele uue väärtuse klassi MyClass abil. Muudatus võetakse seejärel au­to­maat­selt ka­su­tusele ins­tant­sis obj.

Klassi muutujad ja pärimine

Pärimine võimaldab tuletatud klassidel pääseda ligi baaskassi klassi muu­tu­ja­tele ja neid kasutada, ilma et neid oleks vaja uuesti mää­rat­leda.

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

Siin mää­rat­leme baaskassi BaseClass, mis sisaldab klas­si­muu­tu­jat base_var. Tuletatud klass DerivedClass pärineb klassist BaseClass. Pärimise kaudu saab DerivedClass juur­de­pääsu baaskassi klas­si­muu­tu­jale base_var ja kasutada seda ilma seda ümber mää­rat­le­mata.

Go to Main Menu