Декоратор для классов, упрощающий реализацию «богатых» сравнений.
functools.total_ordering(cls)
-> cls
cls -- Класс, к которому требуется применить декоратор.

В Python 3, сравнение в стиле cmp более не используется, вместо этого пользовательские классы обязаны определять методы «богатого» сравнения.

Описываемый декоратор, позволяет для классов, в которых определён __eq__(), а также один из
__lt__(), __gt__(), __le__(), __ge__(), сгенерировать остальные методы автоматически.

    from functools import total_ordering


@total_ordering
class NaiveStudent:

def __eq__(self, other):
return self.last_name == other.last_name

def __lt__(self, other):
return self.last_name < other.last_name


# Посмотрим, сгенерировал ли total_ordering метод __ge__:
NaiveStudent.__ge__ # < unbound method NaiveStudent.__ge__>

Внимание
Несмотря на то, что данный декоратор существенно облегчает создание полностью упорядоченных типов, за это всё же приходится платить как замедлением исполнения, так и более запутанными трассировками (когда они касаются методов, сгенерированных автоматически при помощи данного декоратора). Если тесты производительности указывают на то, что использование декоратора является узким местом в вашем приложении, то определение всех шести методов «богатого» сравнения вручную, вероятно, поможет ускориться.
Синонимы поиска: functools.total_ordering, functools, total_ordering
На заметку
Зарегистрированные пользователи могут публиковать свои мнения относительно Книг, Видео, Статей других авторов и прочего в разделе Обсуждений.