Maison  >  Article  >  développement back-end  >  Comment définir une comparaison d'égalité pour les instances d'objets en Python ?

Comment définir une comparaison d'égalité pour les instances d'objets en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 20:49:29796parcourir

How to Define Equality Comparison for Object Instances in 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 :

  1. Définissez une fonction avec la signature suivante : def __eq__(self, other).
  2. Vérifiez si l'autre objet est de la même classe que self.
  3. Si other est d'une classe différente, renvoyez NotImplemented.
  4. Comparez les valeurs d'attribut de soi et des autres pour déterminer l'égalité.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn