A dataclass with validation Python __post_init__ runs after the generated constructor, which is where cheap invariants belong. Python dataclasses validation chris