5.2 Dataclasses and Type Hints
dataclasses and typing improve clarity, maintainability, and tooling support.
Dataclass essentials
from dataclasses import dataclass, field
@dataclass
class InventoryItem:
name: str
unit_price: float
quantity_on_hand: int = 0
The @dataclass decorator can generate methods such as __init__, __repr__, and __eq__.
Mutable defaults (important)
Use default_factory for mutable fields:
from dataclasses import dataclass, field
@dataclass
class Team:
members: list[str] = field(default_factory=list)
Type hints in practice
def scale(scalar: float, vector: list[float]) -> list[float]:
return [scalar * x for x in vector]
Official docs emphasize: runtime does not enforce annotations automatically; type checkers and IDEs use them.
Official references
dataclasses: https://docs.python.org/3/library/dataclasses.htmltyping: https://docs.python.org/3/library/typing.html- Type system spec: https://typing.python.org/en/latest/spec/index.html