Python Glossary English

Python 3.7+dataclassesфункция

@dataclass(order=True)

базовый

order=True добавляет методы __lt__, __le__, __gt__, __ge__ на основе кортежа полей.

Синтаксис

@dataclass(order=True)
class X:
    a: int; b: int

Сравнение идёт по всем полям в порядке объявления, как по кортежу, — выбрать ключ на лету нельзя, поэтому порядок полей в классе фактически задаёт порядок сортировки; лишние поля исключаются через field(compare=False). Сочетание order=True с eq=False запрещено и падает с ValueError. Сравнение с объектом другого класса возвращает NotImplemented, то есть на выходе получается TypeError, а не False.

Примеры

from dataclasses import dataclass
@dataclass(order=True)
class Version:
    major: int
    minor: int
v1 = Version(1, 0)
v2 = Version(2, 0)
v1 < v2 # → True
sorted([Version(2,0), Version(1,5)]) # → [Version(1,5), Version(2,0)]

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности