Python osztályváltozók létrehozása és használata
A Python osztályváltozók egy strukturált módszert jelentenek az adatok megosztására egy osztály különböző példányai között. Ha egy osztályváltozót módosítasz, az az osztály összes példányára hatással van. Ez azt jelenti, hogy nem kell őket minden alkalommal újra definiálnod, amikor instantiálod őket.
Mik azok a Python osztályváltozók?
Pythonban osztályváltozókat hozunk létre egy osztályon belül. Az osztályváltozók, ellentétben az osztály minden példányára jellemző példányváltozókkal, minden példány esetében ugyanazt az értéket tartják meg. Az osztályváltozókat általában a konstruktor előtt állítjuk be, és az osztály bármely példánya hozzáférhet hozzájuk.
A Python osztályváltozók hasznosak olyan adatok tárolására, amelyek egy osztály összes példányára vonatkoznak, például konfigurációs beállítások, alapértelmezett értékek vagy osztályhierarchián belüli megosztott állapotok. Az osztályváltozók lehetővé teszik olyan osztálymódszerek vagy attribútumok definiálását is, amelyekhez minden példány hozzáférhet, javítva ezzel a kód funkcionalitását és szerkezetét.
Mi a Python osztályváltozók szintaxisa?
A Python osztályváltozók az osztálydefinícióban és a metódusokon kívül jönnek létre.
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: A4pythonA Car osztályon belül meghatározzuk az total_cars osztályváltozót, hogy nyomon kövessük az autók teljes számát. A __init__ konstruktort akkor hívják meg, amikor az osztály új példánya jön létre. Minden példány létrehozásakor a brand és model példányváltozók beállítódnak, és a total_cars osztályváltozó értéke 1-gyel növekszik.
A display_details() metódus meghívásával megjeleníthetjük az egyes autóinstanciák részleteit. Az f-stringben, egy Python string formátumú metódusban, hozzáférhetünk a total_cars osztályváltozóhoz, hogy megjelenítsük a létrehozott autók teljes számát.
Példák a Python osztályváltozók használatára
A hozzáférés, a módosítás és az öröklődés kulcsszerepet játszanak a Python osztályváltozók biztonságos kezelésében.
Osztályváltozók elérés
A Python osztályváltozókhoz az osztálynév vagy az instancia, majd egy pont és a változó neve segítségével lehet hozzáférni.
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.pythonPythonban a osztályváltozókhoz különböző helyeken lehet hozzáférni:
- A konstruktorban: A konstruktorban a
selfkulcsszóval vagy az osztálynévvel hívhatja meg az osztályváltozót. - Az instans módszerekben: Az osztályváltozót az instans módszerekben a
selfkulcsszóval vagy az osztálynévvel hívhatja meg. - Az osztályon kívül: Az osztályváltozóhoz az osztályon kívül az objektumhivatkozáson keresztül vagy az osztálynév használatával férhet hozzá.
Osztályváltozók módosítása
A Python osztályváltozók közvetlenül az osztálynévvel módosíthatók. Ha azonban egy példányváltozó neve megegyezik egy osztályváltozó nevével, és megpróbálja a változót a példányon keresztül módosítani, akkor egy új példányváltozó jön létre, és az osztályváltozó változatlan marad.
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 variablepythonEbben a példában felülírtuk a class_var osztályváltozót azzal, hogy a MyClass osztály segítségével új értéket rendeltünk hozzá. A változást ezután a obj példány automatikusan átveszi.
Osztályváltozók és öröklődés
Az öröklődés lehetővé teszi a származtatott osztályok számára, hogy hozzáférjenek és használják az alaposztály osztályváltozóit anélkül, hogy azokat újra kellene definiálniuk.
class BaseClass:
base_var = "Base variable"
class DerivedClass(BaseClass):
pass
print(DerivedClass.base_var) # Output: Base variablepythonItt definiálunk egy BaseClass alaposztályt, amely tartalmazza a base_var osztályváltozót. A DerivedClass származtatott osztály BaseClass örököl. Az öröklődés révén DerivedClass hozzáférhet az alaposztály base_var osztályváltozójához, és újradefiniálás nélkül használhatja azt.