Convertire un Oggetto in una Stringa

Quando stiamo lavorando con classi e oggetti, è spesso necessario stampare lo stato degli oggetti.




(chp13_classesstr1)

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.




(chp13_classesstr2)

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.

Next Section - Istanze come Valori di Ritorno