Le variabili di classe in Python: come crearle e utilizzarle

Le variabili di classe in Python costituiscono una possibilità strutturata per suddividere 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 è necessario ridefinirle da zero a ogni istanziazione.

Che cosa sono le variabili di classe in Python?

All’interno di una classe in Python è possibile creare delle variabili di classe. A differenza delle variabili di istanza, che sono specifiche per ciascuna istanza di una classe, le variabili di classe mantengono lo stesso valore per tutte le istanze. Di norma, queste variabili sono definite prima del costruttore e sono accessibili da parte di tutte le istanze della classe.

Le variabili di classe in Python sono utilizzate spesso per memorizzare informazioni in comune a tutte le istanze di una classe, come ad esempio i valori di configurazione, i valori standard o condizioni comuni all’interno di una gerarchia di classi. Inoltre, è possibile utilizzare le variabili di classe per definire metodi o attributi condivisi da tutte le istanze di una classe e migliorare quindi la funzionalità e l’organizzazione del codice.

Il tuo web hosting come mai prima d'ora
  • Certificato SSL e protezione DDoS
  • Velocità, flessibilità e scalabilità
  • Dominio e consulente personale
  • 1 anno gratis del gestionale di fatturazione elettronica FlexTax

La sintassi delle variabili di classe in Python

Le variabili di classe in Python vengono create all’interno della definizione 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}")
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 costruttore __init__ viene richiamato quando viene generata una nuova istanza della classe. A ogni istanziazione, vengono impostate le variabili di istanza brand e model, mentre la variabile di classe total_cars viene incrementata di 1.

Richiamando il metodo display_details() otteniamo i dettagli delle rispettive istanze auto. In una f-string, ossia un metodo di formattazione delle stringhe in Python, possiamo accedere alla variabile di classe total_cars per visualizzare il numero totale delle auto prodotte.

Esempi di applicazione delle variabili di classe in Python

Per un utilizzo sicuro delle variabili di classe in Python sono importanti soprattutto l’accesso, la modifica e l’ereditarietà.

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 richiamare le variabili di classe in diversi punti:

  • Nel costruttore: la variabile di classe può essere richiamata all’interno del costruttore per mezzo della parola chiave self oppure con il nome della classe.
  • In metodi istanza: per richiamare 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 riferimento oggetto oppure con il nome della classe.

Modifica delle variabili di classe

Per modificare le variabili di classe in Python puoi utilizzare direttamente il nome della classe. Se però una variabile di istanza ha lo stesso nome di una variabile di classe e provi a modificarla tramite l’istanza, viene creata una nuova variabile di istanza e la variabile di classe rimane inalterata.

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 sovrascriviamo la variabile di classe class_var assegnando un nuovo valore tramite la classe MyClass. La modifica viene acquisita automaticamente dall’istanza obj.

Variabili di classe ed ereditarietà

L’ereditarietà consente alle classi derivate di accedere alle variabili di classe della classe base e di utilizzarle senza doverle ridefinire nuovamente.

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’ereditarietà, DerivedClass può accedere alla variabile di classe base_var della classe base e utilizzarla senza ripetere la definizione.

Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top