Курс 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"
- Colorama: окрашивание текста в Python
- Метод __float__ в Python
- Обработка ошибок в JSON данных
- Взаимодействие с внешними процессами в Python
- Склеивание строк без циклов
- Логирование с Logzero
- Работа с датами в Python
- Метод clear для коллекций
- Генерация случайных чисел в Python
- Контекстный менеджер в Python
- Использование метода lower()
- Работа со случайными элементами
- Работа с областями видимости переменных
- Метод splitlines() для разделения строк
- Операторы объединения в Python 3.9
- Оценка точности модели
- Функция zip() — объединение последовательностей
- Ускоренный импорт библиотек
- Принципы Zen Python
- Сравнение строк в Python
- Работа с очередями в Python
- Работа с каталогами в Python
- Поиск индекса элемента в списке
- Установка и использование howdoi
- Управление памятью в numpy.
- Виртуальное окружение Python
- Работа с атрибутом dict
- Метод join для наборов
- Атрибуты класса и экземпляра
- Создание класса в Python
- Метод __ixor__ для побитового исключающего ИЛИ
- Списки в Python: синтаксис представления
- Избегание циклических зависимостей классов в Python
- Проверка списка: any() и all()
- Многострочные комментарии в Python
- Методы shutil для работы с файлами
- Управление асинхронными задачами на Python.
- Метод ne для сравнения объектов
- Измерение потребления памяти при сортировке
- Измерение времени выполнения кода в Python
- Перехват исключений в Python
- Python 3.12: Псевдонимы типов
- Настройка вывода в Numpy
- Операторы присваивания в Python
- Применение функции map() в Python
- Добавление элементов в список: append() vs extend()
- Автоматизация с Python
- Тернарный оператор в Python















