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
- créer une classe
Livreavec titre et auteur, implémenter__str__. - ajouter
__eq__pour comparer deux livres. - afficher une liste de livres et vérifier le rendu.