Kaip kurti ir naudoti Python klasės kintamuosius
Python klasės kintamieji yra struktūrizuotas būdas dalytis duomenimis tarp skirtingų klasės instancų. Jei pakeisite klasės kintamąjį, tai turės įtakos visoms klasės instancėms. Tai reiškia, kad nereikės jų iš naujo apibrėžti kiekvieną kartą, kai jos yra instanciuojamos.
Kas yra Python klasės kintamieji?
Python kalboje klasės kintamieji kuriamos klasės viduje. Skirtingai nuo instancinių kintamųjų, kurie yra būdingi kiekvienai klasės instancijai, klasės kintamieji išlaiko tą pačią vertę visoms instancijoms. Klasės kintamieji paprastai nustatomi prieš konstruktorių ir prie jų gali prieiti bet kuri klasės instancija.
Python klasės kintamieji yra naudingi saugant duomenis, kurie taikomi visiems klasės egzemplioriams, pvz., konfigūracijos nustatymai, numatytosios reikšmės ar bendri būsenos visoje klasės hierarchijoje. Klasės kintamieji taip pat leidžia apibrėžti klasės metodus ar atributus, prie kurių gali prieiti kiekvienas egzempliorius, taip pagerinant tiek kodo funkcionalumą, tiek struktūrą.
Kokia yra Python klasės kintamųjų sintaksė?
Python klasės kintamieji yra kuriamai klasės apibrėžime 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: A4pythonCar klasėje apibrėžiame klasės kintamąjį total_cars, kad galėtume stebėti bendrą automobilių skaičių. Konstruktorius __init__ iškviečiamas, kai sukuriama nauja klasės instancė. Kiekvieną kartą sukuriant instancę, nustatomi instancės kintamieji brand ir model, o klasės kintamasis total_cars padidinamas 1.
Iškvietę display_details() metodą, galime parodyti atitinkamų automobilių instancų detales. F-strype, Python strypo formato metode, galime pasiekti klasės kintamąjį total_cars, kad parodytume bendrą sukurtų automobilių skaičių.
Python klasės kintamųjų naudojimo pavyzdžiai
Prieiga, modifikavimas ir paveldėjimas atlieka svarbų vaidmenį saugiai tvarkant klasės kintamuosius Python kalboje.
Prieiga prie klasės kintamųjų
Python klasės kintamieji yra pasiekiami per klasės pavadinimą arba instancą, po kurio eina taškas ir kintamojo pavadinimas.
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.pythonPython kalboje prie klasės kintamųjų galima prieiti įvairiose vietose:
- Konstruktoriuje: klasės kintamąjį konstruktoriuje galite iškviesti naudodami raktinį žodį
selfarba klasės pavadinimą. - Instancinių metodų: klasės kintamąjį instanciniuose metoduose galite iškviesti naudodami raktinį žodį
selfarba klasės pavadinimą. - Už klasės ribų: klasės kintamąjį už klasės ribų galite pasiekti per objekto nuorodą arba naudodami klasės pavadinimą.
Klasės kintamųjų keitimas
Python klasės kintamieji gali būti keičiami tiesiogiai per klasės pavadinimą. Tačiau, jei instancinis kintamasis turi tokį patį pavadinimą kaip ir klasės kintamasis, ir bandote pakeisti kintamąjį per instancinį, bus sukurtas naujas instancinis kintamasis, o klasės kintamasis 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 variablepythonŠiame pavyzdyje mes perrašėme klasės kintamąjį class_var, priskirdami jam naują vertę, naudodami klasę MyClass. Pakeitimas automatiškai perimamas obj egzemplioriuje.
Klasės kintamieji ir paveldėjimas
Paveldėjimas leidžia išvestinėms klasėms pasiekti ir naudoti bazinės klasės klasės kintamuosius 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 variablepythonČia apibrėžiame bazinę klasę BaseClass, kurioje yra klasės kintamasis base_var. Išvestinė klasė DerivedClass paveldi iš BaseClass. Per paveldėjimą DerivedClass gali pasiekti bazinės klasės klasės kintamąjį base_var ir jį naudoti be pakartotinio apibrėžimo.