Retour au cours

méthodes spéciales (dunder methods) : str, repr, égalité

les méthodes spéciales (__xxx__) permettent d’intégrer une classe aux comportements natifs python.

objectifs

  • définir __str__ et __repr__
  • définir __eq__ pour comparer objets

explication détaillée

  • __str__ : affichage convivial (print)
  • __repr__ : représentation officielle pour débogage
  • __eq__ : égalité entre objets
  • autres : __len__, __iter__, __add__, etc.

exemples exécutables

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __repr__(self):
        return f"Point({self.x}, {self.y})"

    def __str__(self):
        return f"({self.x}, {self.y})"

    def __eq__(self, other):
        return self.x == other.x and self.y == other.y

p1 = Point(1, 2)
p2 = Point(1, 2)
print(p1)          # (1, 2)
print(repr(p1))    # Point(1, 2)
print(p1 == p2)    # True

bonnes pratiques

  • __repr__ devrait être non ambigu
  • éviter de surcharger sans réelle utilité

pièges courants

  • oublier de vérifier type dans __eq__
  • confondre rôle de __str__ et __repr__

exercices

  1. créer une classe Livre avec titre et auteur, implémenter __str__.
  2. ajouter __eq__ pour comparer deux livres.
  3. afficher une liste de livres et vérifier le rendu.