Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-11-03 20:49:29
original
908 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal