Skip to main content

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