Остальные операторы порядка в ООП в Python
Чтобы не писать отдельный метод под каждый
оператор сравнения, можно использовать
декоратор total_ordering из модуля
functools. Достаточно задать
методы __eq__ и __lt__,
а остальные сравнения Python построит сам.
Пусть у нас есть класс Employee
с зарплатой:
from functools import total_ordering
@total_ordering
class Employee:
def __init__(self, name, salary):
self.name = name
self.salary = salary
def __eq__(self, other):
if not isinstance(other, Employee):
return False
return self.salary == other.salary
def __lt__(self, other):
return self.salary < other.salary
Проверим разные операторы:
emp1 = Employee('john', 1000)
emp2 = Employee('smit', 2000)
print(emp1 <= emp2) # выведет True
print(emp1 >= emp2) # выведет False
print(emp1 != emp2) # выведет True
Сделайте класс User с возрастом.
С помощью total_ordering задайте
полный порядок по возрасту.