PaliSkill
Python avancé

Leçon 1 / 9 — Chapitre 3: POO : méthodes spéciales, propriétés et dataclasses

__str__ : personnaliser l'affichage d'un objet

Par défaut, print() sur un objet affiche un texte peu lisible comme <__main__.Produit object at 0x...>. La méthode spéciale __str__ permet de définir un affichage clair, utilisé automatiquement par print() et str().

class Produit:
    def __init__(self, nom, prix):
        self.nom = nom
        self.prix = prix

    def __str__(self):
        return f"{self.nom} ({self.prix} $)"

riz = Produit("riz", 5)
print(riz)

Ce code affiche riz (5 $) : print(riz) appelle automatiquement riz.__str__() en interne, sans qu'on ait besoin d'appeler cette méthode explicitement — c'est ce qui différencie une méthode spéciale (entourée de doubles underscores) d'une méthode normale.

str(riz) produit exactement le même résultat, puisque str() appelle aussi __str__ en interne :

print(str(riz))

Sans __str__ défini, print(riz) afficherait l'adresse mémoire de l'objet, peu utile pour comprendre ce qu'il contient — __str__ rend cet affichage réellement exploitable, pour du débogage ou pour un utilisateur final.

À vous de jouer : ajoutez une méthode __str__ à une classe de votre choix, qui affiche un résumé lisible de ses attributs, puis testez print() sur un objet.

À vous de jouer

À faire

Que va afficher ce code ?

class Produit:
    def __init__(self, nom):
        self.nom = nom
    def __str__(self):
        return f"Produit : {self.nom}"

p = Produit("sucre")
print(p)

Copiez ce code dans un environnement Python en ligne (Google Colab, Replit, ou tout autre) pour vérifier le résultat avant de répondre.

À vous de jouer

À faire

Que se passe-t-il si une classe n'a pas de méthode str définie ?

Copiez ce code dans un environnement Python en ligne (Google Colab, Replit, ou tout autre) pour vérifier le résultat avant de répondre.

💡 une courte réponse

Quitter le module