Python Language total_ordering


Exemple

Lorsque nous voulons créer une classe ordonnable, nous devons normalement définir les méthodes __eq()__ , __lt__() , __le__() , __gt__() et __ge__() .

Le décorateur total_ordering , appliqué à une classe, autorise la définition de __eq__() et une seule entre __lt__() , __le__() , __gt__() et __ge__() , tout en autorisant toutes les opérations de classement sur la classe.

@total_ordering
class Employee:

    ...

    def __eq__(self, other):
        return ((self.surname, self.name) == (other.surname, other.name))

    def __lt__(self, other):
        return ((self.surname, self.name) < (other.surname, other.name))

Le décorateur utilise une composition des méthodes fournies et des opérations algébriques pour dériver les autres méthodes de comparaison. Par exemple, si nous avons défini __lt__() et __eq()__ et que nous voulons dériver __gt__() , nous pouvons simplement vérifier not __lt__() and not __eq()__ .

Remarque : La fonction total_ordering est uniquement disponible depuis Python 2.7.