PaliSkill
Python avancé

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