Курс Python → Декоратор total_ordering для сравнения объектов
Для упрощения использования операторов сравнения в Python можно воспользоваться декоратором functools.total_ordering. Этот декоратор позволяет автоматически создать все операторы сравнения (__eq__, __ne__, __lt__, __le__, __gt__, __ge__>) на основе реализации лишь двух из них.
Например, если у вас есть класс Point с атрибутами x и y, и вы хотите сравнивать объекты этого класса, то достаточно реализовать методы __eq__ и __lt__>. Затем применить декоратор @functools.total_ordering к классу, чтобы автоматически получить остальные методы сравнения.
from functools import total_ordering
@total_ordering
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, other):
return self.x == other.x and self.y == other.y
def __lt__(self, other):
return self.x < other.x or (self.x == other.x and self.y < other.y)
Теперь объекты класса Point могут быть сравниваемыми с помощью всех операторов сравнения. Например:
p1 = Point(1, 2)
p2 = Point(3, 4)
print(p1 == p2) # False
print(p1 != p2) # True
print(p1 < p2) # True
print(p1 p2) # False
print(p1 >= p2) # False
Таким образом, использование декоратора functools.total_ordering позволяет существенно упростить работу с операторами сравнения в Python, делая код более читаемым и компактным.
Другие уроки курса "Python"
- Применение функций в Python
- Генерация чисел с range()
- Удаление элементов из списка в Python
- Пропуск начальных строк с помощью dropwhile()
- ROT13 Шифр Цезаря в Python
- Работа с рекламными данными в Pandas
- Python itertools combinations() — группировка элементов
- Преобразование данных в Python
- Игра «Виселица» на Python
- Базовые объекты Python
- Создание пользовательской коллекции в Python
- Библиотека Rich: форматирование текста
- Сортировка с помощью параметра key
- Вычисление времени выполнения
- Преобразование символов в нижний регистр
- Атрибуты класса и экземпляра в Python
- Подсчет часто встречающихся элементов
- Метод rename() для переименования файлов и каталогов
- Равенство и идентичность в Python
- Создание новых функций с помощью functools.partial
- PrettyTable: создание таблицы
- Namedtuple в Python
- Функция pow() — возвести число в степень
- Переопределение метода __and__
- Разделение строк методом split()
- Отладка утечек памяти в Python
- Замена символов в Python
- Объединение кортежей в Python
- Объединение списков в Python
- Метод count() для списка
- Поиск простых чисел
- Сравнение объектов в Python
- Комплексные числа в Python
- Python OrderedDict и fromkeys() — работа с словарями
- Функция zip() в Python
- Блок else в обработке исключений
- Метод __int__ в Python
- Работа с индексами списков
- Многострочные комментарии в Python
- Отображение HTML кода в Python
- Проверка окончания строки с помощью str.endswith()
- Регулярные выражения: метод match
- Сложение матриц в NumPy















