Le variabili di classe in Python co­sti­tui­sco­no una pos­si­bi­li­tà strut­tu­ra­ta per sud­di­vi­de­re i dati fra diverse istanze di una classe. Inoltre, le modifiche apportate a una variabile di classe hanno effetto su tutte le istanze della classe. In questo modo non è ne­ces­sa­rio ri­de­fi­nir­le da zero a ogni istan­zia­zio­ne.

Che cosa sono le variabili di classe in Python?

All’interno di una classe in Python è possibile creare delle variabili di classe. A dif­fe­ren­za delle variabili di istanza, che sono spe­ci­fi­che per ciascuna istanza di una classe, le variabili di classe man­ten­go­no lo stesso valore per tutte le istanze. Di norma, queste variabili sono definite prima del co­strut­to­re e sono ac­ces­si­bi­li da parte di tutte le istanze della classe.

Le variabili di classe in Python sono uti­liz­za­te spesso per me­mo­riz­za­re in­for­ma­zio­ni in comune a tutte le istanze di una classe, come ad esempio i valori di con­fi­gu­ra­zio­ne, i valori standard o con­di­zio­ni comuni all’interno di una gerarchia di classi. Inoltre, è possibile uti­liz­za­re le variabili di classe per definire metodi o attributi condivisi da tutte le istanze di una classe e mi­glio­ra­re quindi la fun­zio­na­li­tà e l’or­ga­niz­za­zio­ne del codice.

Web Hosting
Diventa il n°1 della rete con il provider di hosting n°1 in Europa
  • Di­spo­ni­bi­li­tà garantita al 99,99%
  • Dominio, SSL ed e-mail inclusi
  • As­si­sten­za 24/7 in lingua italiana

La sintassi delle variabili di classe in Python

Le variabili di classe in Python vengono create all’interno della de­fi­ni­zio­ne di classe e al di fuori dei metodi.

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

All’interno della classe Car definiamo la variabile di classe total_cars per seguire il numero totale di auto. Il co­strut­to­re __init__ viene ri­chia­ma­to quando viene generata una nuova istanza della classe. A ogni istan­zia­zio­ne, vengono impostate le variabili di istanza brand e model, mentre la variabile di classe total_cars viene in­cre­men­ta­ta di 1.

Ri­chia­man­do il metodo display_details() otteniamo i dettagli delle ri­spet­ti­ve istanze auto. In una f-string, ossia un metodo di for­mat­ta­zio­ne delle stringhe in Python, possiamo accedere alla variabile di classe total_cars per vi­sua­liz­za­re il numero totale delle auto prodotte.

Esempi di ap­pli­ca­zio­ne delle variabili di classe in Python

Per un utilizzo sicuro delle variabili di classe in Python sono im­por­tan­ti so­prat­tut­to l’accesso, la modifica e l’ere­di­ta­rie­tà.

Accesso alle variabili di classe

L’accesso alle variabili di classe in Python avviene tramite il nome della classe o l’istanza, seguiti da un punto e dal nome della variabile.

class MyClass:
    class_var = "This is a class variable"
# using class name to access class variable
print(MyClass.class_var)  # Output: This is a class variable
# using instance to access class variable
obj = MyClass()
print(obj.class_var)  # Output: This is a class variable
python

In Python è possibile ri­chia­ma­re le variabili di classe in diversi punti:

  • Nel co­strut­to­re: la variabile di classe può essere ri­chia­ma­ta all’interno del co­strut­to­re per mezzo della parola chiave self oppure con il nome della classe.
  • In metodi istanza: per ri­chia­ma­re la variabile di classe all’interno di metodi istanza si utilizza la parola chiave self oppure il nome della classe.
  • All’esterno della classe: è possibile accedere alla variabile di classe all’esterno della classe tramite il ri­fe­ri­men­to oggetto oppure con il nome della classe.

Modifica delle variabili di classe

Per mo­di­fi­ca­re le variabili di classe in Python puoi uti­liz­za­re di­ret­ta­men­te il nome della classe. Se però una variabile di istanza ha lo stesso nome di una variabile di classe e provi a mo­di­fi­car­la tramite l’istanza, viene creata una nuova variabile di istanza e la variabile di classe rimane inal­te­ra­ta.

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

In questo esempio so­vra­scri­via­mo la variabile di classe class_var as­se­gnan­do un nuovo valore tramite la classe MyClass. La modifica viene acquisita au­to­ma­ti­ca­men­te dall’istanza obj.

Variabili di classe ed ere­di­ta­rie­tà

L’ere­di­ta­rie­tà consente alle classi derivate di accedere alle variabili di classe della classe base e di uti­liz­zar­le senza doverle ri­de­fi­ni­re nuo­va­men­te.

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

Qui definiamo una classe base BaseClass che contiene la variabile di classe base_var. La classe derivata DerivedClass eredita da BaseClass. Grazie all’ere­di­ta­rie­tà, DerivedClass può accedere alla variabile di classe base_var della classe base e uti­liz­zar­la senza ripetere la de­fi­ni­zio­ne.

Vai al menu prin­ci­pa­le