Maison > Article > développement back-end > Comment définir une comparaison d'égalité pour les instances d'objets en Python ?
Comment comparer des instances d'objets pour l'égalité en fonction des attributs
Python compare nativement les instances d'objets par référence, ce qui signifie que même si deux objets ont des valeurs identiques valeurs d’attribut, elles seront considérées comme inégales. Ce comportement peut être problématique lorsque vous devez effectuer des vérifications d'égalité basées sur les attributs d'un objet.
Une solution à ce problème consiste à implémenter la méthode __eq__ dans votre classe. Cette méthode vous permet de définir les conditions dans lesquelles deux instances de votre classe sont considérées comme égales.
Pour implémenter __eq__, suivez ces étapes :
Par exemple, voici une implémentation de __eq__ pour la classe MyClass :
<code class="python">class MyClass: def __init__(self, foo, bar): self.foo = foo self.bar = bar def __eq__(self, other): if not isinstance(other, MyClass): return NotImplemented return self.foo == other.foo and self.bar == other.bar</code>
Avec cette implémentation, les instances de MyClass peuvent être comparés pour l'égalité en fonction de leurs attributs foo et bar :
<code class="python">x = MyClass('foo', 'bar') y = MyClass('foo', 'bar') print(x == y) # True</code>
Notez que l'implémentation de __eq__ rendra les instances de votre classe impossibles à hacher. Si vous devez stocker des instances dans des ensembles ou des dictionnaires, vous devez également implémenter la méthode __hash__ pour définir une fonction de hachage pour vos objets.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!