2014-04-20 5 views
1

Lors de l'implémentation des méthodes de comparaison riche dans une classe, que doit-on renvoyer lors de la comparaison de deux types de classe différents? De la documentation, il ditComparaison supérieure/inférieure à Python

instances d'une classe ne peuvent pas être commandés par rapport à d'autres instances de la même classe, ou d'autres types d'objets, à moins que la classe définit soit assez des méthodes de comparaison riches (__lt__(), __le__(), __gt__() et __ge__()) ou la méthode __cmp__().

Cependant, je ne trouve nulle part dans la documentation où il mentionne le type de retour standard pour la comparaison entre deux classes différentes. Je voudrais connaître la norme pour les deux Python 2 et Python 3.

Répondre

0

__cmp__ (Python 2.x only) doit retourner négatif pour self < other, zéro pour self == other et positif pour self > other. ("Méthodes de comparaison riche", 2.x et 3.x) devraient renvoyer des valeurs booléennes appropriées, par ex. __lt__(self, other) devrait retourner True lorsque self < other, False sinon.

+0

Pour 'Python 2' correct? – Jonathan

+0

Dans 2.x et 3.x, sauf que 3.x n'utilise pas '__cmp__'. Voir par exemple https://docs.python.org/3.4/reference/datamodel.html#object.__lt__ – jonrsharpe