Leçon 3 / 9 — Chapitre 3: POO : méthodes spéciales, propriétés et dataclasses
__eq__ : comparer deux objets avec ==
Par défaut, == entre deux objets compare leur identité (sont-ils exactement le même objet en mémoire ?), pas le contenu de leurs attributs. La méthode spéciale __eq__ permet de redéfinir ce comportement pour comparer le contenu.
class Produit:
def __init__(self, nom, prix):
self.nom = nom
self.prix = prix
a = Produit("riz", 5)
b = Produit("riz", 5)
print(a == b)
Sans __eq__, ce code affiche False : a et b sont deux objets distincts en mémoire, même avec des attributs identiques — == compare leur identité par défaut, pas leur contenu.
class Produit:
def __init__(self, nom, prix):
self.nom = nom
self.prix = prix
def __eq__(self, autre):
return self.nom == autre.nom and self.prix == autre.prix
a = Produit("riz", 5)
b = Produit("riz", 5)
print(a == b)
Ce code affiche désormais True : __eq__ compare explicitement nom et prix des deux objets, plutôt que leur identité en mémoire — a == b appelle automatiquement a.__eq__(b) en interne.
À vous de jouer : ajoutez une méthode __eq__ à une classe qui compare deux attributs, créez deux objets aux mêmes valeurs, et vérifiez que == renvoie bien True.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 87 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès