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.
- Certificato SSL e protezione DDoS
- Velocità, flessibilità e scalabilità
- Dominio e consulente personale
- 1 anno gratis del gestionale di fatturazione elettronica FlexTax
![](https://www.ionos.it/digitalguide/fileadmin/DigitalGuide/IAS/CTAs/SEO_Digital_Guide_Mobile_nur-Nlement_900x750.png)
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
pythonAll’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
pythonIn 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
pythonIn 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
pythonQui 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.