Python-luokan muuttujat ovat jä­sen­nel­ty tapa jakaa tietoja luokan eri ins­tans­sien välillä. Jos teet muutoksia luokan muut­tu­jaan, se vaikuttaa kaikkiin luokan ins­tans­sei­hin. Tämä tar­koit­taa, että sinun ei tarvitse mää­ri­tel­lä niitä uudelleen joka kerta, kun ne ins­tan­soi­daan.

Mitä ovat Python-luokan muuttujat?

Pyt­ho­nis­sa luomme luok­ka­muut­tu­jia luokan sisällä. Toisin kuin ins­tans­si­muut­tu­jat, jotka ovat luok­ka­koh­tai­sia, luok­ka­muut­tu­jat säi­lyt­tä­vät saman arvon kaikissa ins­tans­seis­sa. Luok­ka­muut­tu­jat mää­ri­te­tään yleensä ennen kon­struk­to­ria, ja niihin pääsee käsiksi minkä tahansa luokan ins­tans­sin kautta.

Python-luokan muuttujat ovat hyö­dyl­li­siä tal­len­ta­maan tietoja, jotka koskevat kaikkia luokan ins­tans­se­ja, kuten kon­fi­gu­roin­tia­se­tuk­sia, ole­tusar­vo­ja tai luok­ka­hie­rar­kias­sa jaettuja tiloja. Luokan muut­tu­jien avulla voit myös mää­ri­tel­lä luok­ka­me­to­de­ja tai att­ri­buut­te­ja, joihin jokainen instanssi voi käyttää, mikä parantaa sekä koodisi toi­min­nal­li­suut­ta että ra­ken­net­ta.

Mikä on Python-luok­ka­muut­tu­jien syntaksi?

Python-luokan muuttujat luodaan luok­ka­mää­ri­tel­män sisällä ja me­ne­tel­mien ul­ko­puo­lel­la.

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

Luokassa Car mää­ri­tel­lään luok­ka­muut­tu­ja total_cars, joka pitää kirjaa autojen ko­ko­nais­mää­räs­tä. Kon­struk­to­ri __init__ kutsutaan, kun luodaan uusi luokan instanssi. Jo­kai­sel­la ins­tans­soin­nil­la ins­tans­si­muut­tu­jat brand ja model asetetaan ja luok­ka­muut­tu­ja total_cars kas­va­te­taan yhdellä.

Kut­su­mal­la display_details() voimme näyttää kyseisten autojen ins­tans­sien tiedot. F-merk­ki­jo­nos­sa, joka on Python-merk­ki­jo­no­muo­toi­lu­me­ne­tel­mä, voimme käyttää luok­ka­muut­tu­jaa total_cars näyt­tä­mään luotujen autojen ko­ko­nais­mää­rän.

Esi­merk­ke­jä Python-luokan muut­tu­jien käytöstä

Pääsy, muokkaus ja perintö ovat avai­na­se­mas­sa Pythonin luok­ka­muut­tu­jien tur­val­li­ses­sa kä­sit­te­lys­sä.

Luok­ka­muut­tu­jien käyttö

Python-luokan muut­tu­jiin pääsee käsiksi luokan nimen tai ins­tans­sin kautta, jota seuraa piste ja muuttujan 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

Pyt­ho­nis­sa voit käyttää luok­ka­muut­tu­jia useissa eri paikoissa:

  • Kon­struk­to­ris­sa: Voit kutsua luok­ka­muut­tu­jan kon­struk­to­ris­sa joko avain­sa­nal­la self tai luok­ka­ni­mel­lä.
  • Ins­tans­si­me­to­deis­sa: Voit kutsua luok­ka­muut­tu­jan ins­tans­si­me­to­deis­sa joko avain­sa­nal­la self tai luokan nimellä.
  • Luokan ul­ko­puo­lel­la: Voit käyttää luok­ka­muut­tu­jaa luokan ul­ko­puo­lel­la ob­jek­ti­viit­tauk­sen tai luokan nimen avulla.

Luok­ka­muut­tu­jien muok­kaa­mi­nen

Python-luokan muuttujia voidaan muokata suoraan luokan nimen kautta. Jos kuitenkin ins­tans­si­muut­tu­jal­la on sama nimi kuin luok­ka­muut­tu­jal­la ja yrität muuttaa muuttujaa ins­tans­sin kautta, luodaan uusi ins­tans­si­muut­tu­ja ja luok­ka­muut­tu­ja pysyy muut­tu­mat­to­ma­na.

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

Tässä esi­mer­kis­sä olemme korvannut luok­ka­muut­tu­jan class_var antamalla sille uuden arvon luokalla MyClass. Muutos otetaan sitten au­to­maat­ti­ses­ti käyttöön ins­tans­sis­sa obj.

Luok­ka­vaih­te­li­jat ja pe­riy­ty­mi­nen

Perintö mah­dol­lis­taa joh­det­tu­jen luokkien pääsyn ja käytön pe­rus­luo­kan luok­ka­muut­tu­jiin ilman, että niitä tarvitsee mää­ri­tel­lä uudelleen.

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

Tässä mää­ri­tel­lään pe­rus­luok­ka BaseClass, joka sisältää luok­ka­muut­tu­jan base_var. Johdettu luokka DerivedClass perii luokasta BaseClass. Perinnän kautta DerivedClass voi käyttää pe­rus­luo­kan luok­ka­muut­tu­jaa base_var ilman, että sitä tarvitsee mää­ri­tel­lä uudelleen. 4dbc716b5eea9ffa69e4d918b961c9b0

Siirry pää­va­lik­koon