Convertire un Oggetto in una Stringa¶
Quando stiamo lavorando con classi e oggetti, è spesso necessario stampare lo stato degli oggetti.
La funzione print
ritorna una rappresentazione dell’istanza di Point p
come stringa. La funzionalità di default di Python ci dice che p
è un oggetto di tipo Point
. Tuttavia, non dice nulla sullo stato dell’oggetto.
Possiamo migliorare questa rappresentazione se includiamo il metodo speciale __str__
. Notiamo che il metodo usa la stessa convenzione del costruttore, con due underscore prima e dopo il nome. Questa è una convenzione in realtà per i metodi speciali di Python.
Il metodo __str__
è responsabile di ritornare una rappresentazione in stringa dell’oggetto e il programmatore sceglie tale rappresentazione. E’ richiesto che il metodo __str__
crei e ritorni una stringa.
When we run the program above you can see that the print
function now shows the string that we chose.
Notiamo che abbiamo già un metodo di conversione di tipo str
che può trasformare un oggetto in una stringa. Questo metodo è invocato automaticamente se facciamo print
.
Tuttavia, abbiamo notato che questo metodo nel caso di Point non restituisce la stringa che vogliamo. Python fornisce molte implementazioni di default che magari desideriamo cambiare. Questa ridefinizione dei comportamenti è chiamato overriding (sovrascrittura). Quando str
viene ridefinito, Python invoca il metodo __str__
ridefinito piuttosto che quello di default.