lettura facile

Il metodo __str__ delle classi in Python

Oggi parliamo del metodo `__str__` delle classi Python. Questo metodo ti permette di definire come un oggetto deve essere rappresentato come stringa.

__str__

Il metodo `__str__` viene chiamato quando utilizzi la funzione str() o print() su un oggetto.

E' uno dei metodi speciali in Python, noti anche come "dunder" methods (da "double underscore"), utilizzati per dare una funzionalità particolare agli oggetti.

A cosa serve? Immagina di avere una classe complessa e vuoi essere in grado di stampare una rappresentazione leggibile del suo stato. Di default Python usa una rappresentazione predefinita che di solito non è molto informativa. Definendo il metodo `__str__`, invece, puoi personalizzare questa rappresentazione per renderla più chiara.

Vediamo un esempio pratico per capire meglio come funziona.

Supponi di avere una classe `Persona`:

class Persona:
    def __init__(self, nome, eta):
       self.nome = nome
       self.eta = eta

Crea un'istanza di Persona

persona = Persona("Alice", 30)

Se stampi l'oggetto Python ti restituisce il riferimento dell'oggetto che non è molto utile.

print(persona)

<__main__.Persona object at 0x7f4748338310>

Ora, aggiungi il metodo `__str__` alla classe:

class Persona:
    def __init__(self, nome, eta):
       self.nome = nome
       self.eta = eta

    def __str__(self):
       return f"Persona(nome={self.nome}, eta={self.eta})"

Crea una nuova istanza di Persona

persona = Persona("Alice", 30)

Quando stampi l'oggetto Python richiama il metodo __str__ che visualizza il nome e l'età della persona. Molto meglio, vero?

print(persona)

Persona(nome=Alice, eta=30)

Ovviamente puoi personalizzare il messaggio di ritorno e le informazioni a seconda delle tue esigenze.

In ogni caso ricorda che il metodo `__str__` deve restituire sempre una stringa (`str`).

Un altro metodo simile è `__repr__`. La differenza principale è che `__repr__` è pensato per fornire una rappresentazione più dettagliata e precisa dell'oggetto, mentre `__str__` è più per una rappresentazione user-friendly.




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin