Kuidas luua ja kasutada Python klassi muutujaid
Pythoni klassi muutujad on struktureeritud viis andmete jagamiseks klassi erinevate instantside 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ääratlema, kui need instantsitakse.
Mis on Pythoni klassi muutujad?
Pythonis loome klassi muutujad klassi sees. Erinevalt instantsi muutujatest, mis on spetsiifilised iga klassi instantsi jaoks, säilitavad klassi muutujad sama väärtuse kõikide instantside jaoks. Klassimuutujad seatakse tavaliselt enne konstruktorit ja neile on juurdepääs igal klassi instantsil.
Pythoni klassi muutujad on kasulikud klassi kõikidele instantsidele kehtivate andmete, näiteks konfiguratsiooniseadete, vaikimisi väärtuste või klassihierarhia ühiste seisundite salvestamiseks. Klassimuutujad võimaldavad teil määratleda ka klassimeetodeid või atribuute, millele iga instants pääseb ligi, parandades nii koodi funktsionaalsust kui ka struktuuri.
Mis on Python klassi muutujate süntaks?
Pythoni klassi muutujad luuakse klassi määratluses ja meetodite väljaspool.
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: A4pythonKlassis Car määratleme klassimuutuja total_cars, et jälgida autode koguarvu. Konstruktor __init__ kutsutakse välja, kui luuakse klassi uus instants. Iga instantsi loomisel määratakse instantsimuutujad brand ja model ning klassimuutuja total_cars suurendatakse 1 võrra.
Meetodit display_details() kutsudes saame kuvada vastavate autoinstantside üksikasjad. F-stringis, mis on Pythoni stringi vormingumeetod, saame juurdepääsu klassi muutujale total_cars, et kuvada loodud autode koguarv.
Näited Python klassi muutujate kasutamise kohta
Juurdepääs, muutmine ja pärimine mängivad olulist rolli klassi muutujate turvalises käsitlemises Pythonis.
Klassi muutujatele juurdepääs
Python klassi muutujatele 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.pythonPythonis on klassi muutujatele juurdepääs mitmes kohas:
- Konstruktoris: Konstruktoris saab klassi muutujat kutsuda kas märksõna
selfvõi klassi nime abil. - Instantsimeetodites: klassi muutujat saab instantsimeetodites kutsuda kas märksõna
selfvõi klassi nime abil. - Klassist väljaspool: Klassimuutujale pääseb juurde klassist väljaspool 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 muutumatuks.
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 variablepythonSelles näites kirjutasime klassi muutuja class_var üle, omistades sellele uue väärtuse klassi MyClass abil. Muudatus võetakse seejärel automaatselt kasutusele instantsis obj.
Klassi muutujad ja pärimine
Pärimine võimaldab tuletatud klassidel pääseda ligi baaskassi klassi muutujatele ja neid kasutada, ilma et neid oleks vaja uuesti määratleda.
class BaseClass:
base_var = "Base variable"
class DerivedClass(BaseClass):
pass
print(DerivedClass.base_var) # Output: Base variablepythonSiin määratleme baaskassi BaseClass, mis sisaldab klassimuutujat base_var. Tuletatud klass DerivedClass pärineb klassist BaseClass. Pärimise kaudu saab DerivedClass juurdepääsu baaskassi klassimuutujale base_var ja kasutada seda ilma seda ümber määratlemata.