Python klasės kin­ta­mie­ji yra struk­tū­ri­zuo­tas būdas dalytis duo­me­ni­mis tarp skirtingų klasės instancų. Jei pakeisite klasės kintamąjį, tai turės įtakos visoms klasės ins­tan­cėms. Tai reiškia, kad nereikės jų iš naujo apibrėžti kiekvieną kartą, kai jos yra ins­tan­ciuo­ja­mos.

Kas yra Python klasės kin­ta­mie­ji?

Python kalboje klasės kin­ta­mie­ji kuriamos klasės viduje. Skir­tin­gai nuo ins­tan­ci­nių kintamųjų, kurie yra būdingi kiek­vie­nai klasės ins­tan­ci­jai, klasės kin­ta­mie­ji išlaiko tą pačią vertę visoms ins­tan­ci­joms. Klasės kin­ta­mie­ji paprastai nustatomi prieš konst­ruk­to­rių ir prie jų gali prieiti bet kuri klasės ins­tan­ci­ja.

Python klasės kin­ta­mie­ji yra naudingi saugant duomenis, kurie taikomi visiems klasės eg­zemp­lio­riams, pvz., kon­fi­gū­ra­ci­jos nu­sta­ty­mai, nu­ma­ty­to­sios reikšmės ar bendri būsenos visoje klasės hie­rar­chi­jo­je. Klasės kin­ta­mie­ji taip pat leidžia apibrėžti klasės metodus ar atributus, prie kurių gali prieiti kiek­vie­nas eg­zemp­lio­rius, taip pa­ge­ri­nant tiek kodo funk­cio­na­lu­mą, tiek struktūrą.

Kokia yra Python klasės kintamųjų sintaksė?

Python klasės kin­ta­mie­ji yra kuriamai klasės api­brė­ži­me ir už metodų ribų.

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

Car klasėje api­brė­žia­me klasės kintamąjį total_cars, kad galėtume stebėti bendrą au­to­mo­bi­lių skaičių. Konst­ruk­to­rius __init__ iš­kvie­čia­mas, kai sukuriama nauja klasės instancė. Kiekvieną kartą sukuriant instancę, nustatomi instancės kin­ta­mie­ji brand ir model, o klasės kin­ta­ma­sis total_cars pa­di­di­na­mas 1.

Iškvietę display_details() metodą, galime parodyti ati­tin­ka­mų au­to­mo­bi­lių instancų detales. F-strype, Python strypo formato metode, galime pasiekti klasės kintamąjį total_cars, kad pa­ro­dy­tu­me bendrą sukurtų au­to­mo­bi­lių skaičių.

Python klasės kintamųjų naudojimo pa­vyz­džiai

Prieiga, mo­di­fi­ka­vi­mas ir pa­vel­dė­ji­mas atlieka svarbų vaidmenį saugiai tvarkant klasės kin­ta­muo­sius Python kalboje.

Prieiga prie klasės kintamųjų

Python klasės kin­ta­mie­ji yra pa­sie­kia­mi per klasės pa­va­di­ni­mą arba instancą, po kurio eina taškas ir kintamojo pa­va­di­ni­mas.

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

Python kalboje prie klasės kintamųjų galima prieiti įvairiose vietose:

  • Konst­ruk­to­riu­je: klasės kintamąjį konst­ruk­to­riu­je galite iškviesti naudodami raktinį žodį self arba klasės pa­va­di­ni­mą.
  • Ins­tan­ci­nių metodų: klasės kintamąjį ins­tan­ci­niuo­se metoduose galite iškviesti naudodami raktinį žodį self arba klasės pa­va­di­ni­mą.
  • Už klasės ribų: klasės kintamąjį už klasės ribų galite pasiekti per objekto nuorodą arba naudodami klasės pa­va­di­ni­mą.

Klasės kintamųjų keitimas

Python klasės kin­ta­mie­ji gali būti keičiami tie­sio­giai per klasės pa­va­di­ni­mą. Tačiau, jei ins­tan­ci­nis kin­ta­ma­sis turi tokį patį pa­va­di­ni­mą kaip ir klasės kin­ta­ma­sis, ir bandote pakeisti kintamąjį per ins­tan­ci­nį, bus sukurtas naujas ins­tan­ci­nis kin­ta­ma­sis, o klasės kin­ta­ma­sis liks nepakitęs.

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

Šiame pavyzdyje mes perrašėme klasės kintamąjį class_var, pri­skir­da­mi jam naują vertę, naudodami klasę MyClass. Pa­kei­ti­mas au­to­ma­tiš­kai perimamas obj eg­zemp­lio­riu­je.

Klasės kin­ta­mie­ji ir pa­vel­dė­ji­mas

Pa­vel­dė­ji­mas leidžia iš­ves­ti­nėms klasėms pasiekti ir naudoti bazinės klasės klasės kin­ta­muo­sius be būtinybės juos iš naujo apibrėžti.

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

Čia api­brė­žia­me bazinę klasę BaseClass, kurioje yra klasės kin­ta­ma­sis base_var. Išvestinė klasė DerivedClass paveldi iš BaseClass. Per pa­vel­dė­ji­mą DerivedClass gali pasiekti bazinės klasės klasės kintamąjį base_var ir jį naudoti be pa­kar­to­ti­nio api­brė­ži­mo.

Go to Main Menu