dataclasses and __slots__
Design a small subsystem that relies on dataclasses and __slots__. Outline components, data flow, failure modes, and metrics.
Answers use simple, clear English.
Quick interview answer
Use dataclasses and __slots__ as the core idea. Example shape: DTO layer: @dataclass(slots=True) OrderItem(sku: str, qty: int, price: Decimal)..
Detailed answer
Use dataclasses and __slots__ as the core idea. Example shape: DTO layer: @dataclass(slots=True) OrderItem(sku: str, qty: int, price: Decimal).. Watch for: Inheritance with slots tricky; default mutable fields need default_factory.. Measure success via latency/error/saturation. Core: @dataclass auto-generates __init__, __repr__, __eq__. slots=True (Py3.10+) fixes attributes and saves memory. frozen=True makes instances hashable if all fields hashable. Real-time example: DTO layer: @dataclass(slots=True) OrderItem(sku: str, qty: int, price: Decimal). Pros: Less boilerplate than manual classes; slots reduce per-instance dict overhead. Cons: Inheritance with slots tricky; default mutable fields need default_factory. Common mistakes: Mutable default list in dataclass field; forgetting frozen for dict keys. Best practices: Use field(default_factory=list); kw_only=True for clarity in large models. Audience level: Architect.
Full explanation
@dataclass auto-generates __init__, __repr__, __eq__. slots=True (Py3.10+) fixes attributes and saves memory. frozen=True makes instances hashable if all fields hashable.
Real example & use case
DTO layer: @dataclass(slots=True) OrderItem(sku: str, qty: int, price: Decimal).
Pros & cons
Pros: Less boilerplate than manual classes; slots reduce per-instance dict overhead. Cons: Inheritance with slots tricky; default mutable fields need default_factory.
Common mistakes
Mutable default list in dataclass field; forgetting frozen for dict keys.
Best practices
Use field(default_factory=list); kw_only=True for clarity in large models.
Follow-up questions
Only answered follow-ups are shown — click to open with full answers