Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
Protocole __hash__ et __eq__
En Python, pour mettre un objet dans un set ou l'utiliser comme clé de dictionnaire, il doit etre hashable. Cela veut dire qu'il doit avoir une méthode __hash__ qui retourne un entier.
Mais il y a une regle importante : si tu definis __eq__ sur ta classe, Python desactive automatiquement __hash__. Tu dois donc definir les deux ensemble.
La regle d'or : si a == b, alors hash(a) == hash(b). L'inverse n'est pas forcement vrai (deux objets differents peuvent avoir le meme hash).
Pour calculer un hash a partir de plusieurs valeurs, utilise hash() sur un tuple : hash((self.x, self.y))
Crée une classe Point avec x et y. Implemente __eq__ (egalite si x et y identiques) et __hash__ (base sur le tuple x, y).