Курс 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 itertools combinations() — группировка элементов
- Метод enumerate() в Python
- Перевод текста с Python Translator
- Python и Юникод: работа с цифрами
- Считывание бинарного файла в Python
- Генераторы в Python
- SciPy: широкий функционал для математических операций
- Оператор += для объединения строк
- Функция reversed() в Python
- Удаление дубликатов из списка с помощью dict.fromkeys
- Выражения-генераторы в Python
- Оптимизация сравнения в Python
- Модуль itertools: эффективная работа с итераторами
- Идентификатор объекта в Python
- Работа с изображениями Pillow
- Библиотека wikipedia для Python
- Генераторы в Python
- Удаление URL-адресов в Python
- JMESPath в Python
- Регистрация на TenChat
- Метод __irshift__ для Python
- Установка и использование Virtualenv
- Метод lt для сортировки объектов
- Методы __repr__ и __str__ в Python
- Комментарии в Python
- Bootle — простой веб-фреймворк
- Игра «Угадывание чисел»
- Печать календаря в Python
- Оператор break в Python
- Вычисление фазы комплексного числа
- Циклы for в Python
- Извлечение новостей с помощью newspaper3k
- Работа с геоданными с помощью geopy
- Модуль pprint: улучшение вывода данных
- Создание GUI на Tkinter
- Хеши в Python
- Блок try-except-else
- Избегайте использования goto
- Импорт модулей в Python 3.12
- Переворот последовательности
- Метод Event.wait() в Python
- Комментарии в Python
- Отладка кода
- Область видимости переменных















