Python › Dataclasses & NamedTuples

How do you implement custom ordering (<, <=, >, >=) for a dataclass using order=True, and what constraint does it place on field comparison?

Advanced

Answer

Passing order=True to @dataclass auto-generates __lt__, __le__, __gt__, and __ge__ that compare instances FIELD BY FIELD IN DECLARATION ORDER (like comparing tuples) — this requires ALL fields to support the relevant comparison operators themselves, or a TypeError occurs at comparison time.
@dataclass(order=True)
class Version:
    major: int
    minor: int
    patch: int

v1 = Version(1, 2, 0)
v2 = Version(1, 3, 0)
print(v1 < v2)  # True -- compares (major, minor, patch) tuples field by field
Real-world example Sorting a list of version numbers, dates, or priority-ranked records using their natural field order.

Common follow-ups: How would you make ONLY a subset of fields (not all of them) participate in the ordering comparison?