312 votes

Comparer des instances d’objets pour l’égalité par leurs attributs en Python

Quelle est la meilleure façon de comparer deux instances d’un objet quelconque pour l’égalité en Python ? J’aimerais pouvoir faire quelque chose comme

Exemple :

EDIT :

Pour clarifier davantage la question. Je voudrais comparer les valeurs de l’attribut et de faire une solution plus générique que

Si la `` méthode ressembler à quelque chose comme ça ?

447voto

e-satis Points 146299

Comme d’habitude avec Python, c’est de baiser :

Il affiche :

N.B : n’oubliez pas qu’avant de Python 3.0, vous êtes plus susceptibles d’utiliser au lieu de , fonctionne de la même manière.

52voto

Christopher Points 5252

Vous substituez les opérateurs de comparaison riche dans votre objet.

8voto

Kiv Points 9116

Mettre en œuvre la `` méthode dans votre classe, quelque chose comme ceci :

Edit : Si vous souhaitez que vos objets pour comparer l’égalité si et seulement si ils ont dictionnaires instance égale :

1voto

Silfverstrom Points 8132

Lors de la comparaison des instances d'objets, la cmp fonction est appelée.

Si l'opérateur == ne fonctionne pas pour vous par défaut, vous pouvez toujours redéfinir la cmp de la fonction de l'objet.

Edit:

Comme cela a été souligné, la commission de la fonction est obsolète depuis la version 3.0. Au lieu de cela, vous devez utiliser le "riche"comparaison des méthodes.

1voto

Eldelshell Points 1414

Vous pouvez accélérer les choses peu à l’aide d’un hachage

Cela bien sûr ne fonctionnera que pour comparer des objets ErrorDocument.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X