SyntaxStudy
Sign Up
Python Advanced 4 min read

Advanced Dataclasses

Advanced Dataclasses

Dataclasses support post-init processing, field metadata, frozen instances, inheritance, and __slots__ for memory efficiency.

Example
from dataclasses import dataclass, field, KW_ONLY
from typing import ClassVar

@dataclass(frozen=True, slots=True)
class Point:
    x: float; y: float
    _registry: ClassVar[list] = []
    def distance(self) -> float:
        return (self.x**2 + self.y**2) ** 0.5

@dataclass
class Circle:
    center: Point
    radius: float = field(default=1.0, metadata={"unit": "metres"})
    _: KW_ONLY
    color: str = "black"

p = Point(3.0, 4.0)
print(p.distance())  # 5.0
Pro Tip

frozen=True + slots=True gives you immutable, memory-efficient value objects — great for domain models.