Python è un linguaggio di programmazione estremamente versatile e potente, e uno dei suoi punti di forza è la programmazione orientata agli oggetti. Comprendere classi e oggetti è fondamentale per scrivere codice modulare, riutilizzabile e ben organizzato. In questa guida, pensata per chi è alle prime armi, scopriremo passo dopo passo come funziona questo concetto in Python.
Cosa sono gli oggetti e le classi in Python?
Una classe è un modello, una sorta di stampo, che ci consente di creare oggetti — ovvero delle istanze concrete con proprietà e comportamenti specifici. Ogni oggetto creato da una classe può avere valori differenti, ma condivide la stessa struttura.
Come si definisce una classe in Python
Per creare una classe, si utilizza la parola chiave class
. Ecco un esempio di base:
class Persona:
def saluta(self):
print("Ciao! Piacere di conoscerti.")
In questo esempio, Persona
è una classe con un solo metodo: saluta
.
Come si crea un oggetto a partire da una classe
Una volta definita la classe, possiamo creare un oggetto (istanza) in questo modo:
persona1 = Persona()
persona1.saluta()
Il metodo saluta
verrà eseguito proprio dall’oggetto persona1
, che è un’istanza della classe Persona.
Attributi e metodi: cosa sono e come si usano
Le classi possono contenere sia attributi (cioè dati) che metodi (cioè funzioni). Vediamo un esempio con attributi:
class Persona:
def __init__(self, nome, età):
self.nome = nome
self.età = età
def saluta(self):
print("Ciao, mi chiamo", self.nome)
In questo caso, nome
ed età
sono attributi dell’oggetto. Ogni istanza della classe potrà avere valori diversi per questi attributi.
Come funziona il costruttore in una classe Python
Il costruttore è un metodo speciale chiamato __init__
, che viene eseguito automaticamente quando viene creato un nuovo oggetto.
Serve per inizializzare l’oggetto, ovvero per assegnare valori iniziali agli attributi:
persona2 = Persona("Luca", 30)
persona2.saluta()
Il metodo __init__
garantisce che ogni oggetto abbia subito tutte le informazioni necessarie per funzionare correttamente.
Come aggiornare o rimuovere proprietà degli oggetti
In Python, è possibile modificare o eliminare gli attributi di un oggetto anche dopo la sua creazione. Ecco come:
# Modifica
persona2.nome = "Marco"
# Eliminazione
del persona2.età
Queste operazioni vanno usate con cautela, soprattutto l’eliminazione, poiché possono compromettere la coerenza dell’oggetto.
Il metodo speciale __str__: rendere un oggetto leggibile
Il metodo __str__
consente di definire cosa deve essere restituito quando stampiamo un oggetto con print
. È molto utile per il debug e per una rappresentazione più umana dell’oggetto:
class Persona:
def __init__(self, nome, età):
self.nome = nome
self.età = età
def __str__(self):
return f"{self.nome}, {self.età} anni"
Ora, stampando print(persona2)
, verrà visualizzato qualcosa come Marco, 30 anni.
A cosa serve la parola chiave self in Python
La parola chiave self
rappresenta l’istanza corrente della classe. È necessaria per accedere agli attributi e ai metodi all’interno della classe stessa.
Non va confusa con un parametro generico: è un riferimento preciso all’oggetto attuale. Ecco un esempio chiaro:
class Prodotto:
def __init__(self, nome, prezzo):
self.nome = nome
self.prezzo = prezzo
def descrizione(self):
return f"{self.nome} costa {self.prezzo}€"
Senza self
, non potremmo distinguere tra le variabili della classe e i parametri del metodo.