Skip to main content

Python Dataclasses

OOP Modern Tools

Dataclasses

`@dataclass` reduces boilerplate for classes that primarily store data.

Definition

from dataclasses import dataclass, field
from datetime import datetime

@dataclass
class Invoice:
total: float
customer: str
created_at: datetime = field(default_factory=datetime.utcnow)
  • Generates __init__, __repr__, __eq__ automatically.
  • Use field(default_factory=...) for mutable defaults.

Advanced options

  • frozen=True -> immutable instances.
  • slots=True (Python 3.10+) -> reduces memory usage.
  • kw_only=True -> keyword-only init parameters.

Next up in your learning path