Python

Lesson 07

Dataclasses for data shapes

Use dataclasses for stable internal data shapes instead of loose dictionaries with repeated string keys.

Good Code

review_summary.py
from dataclasses import dataclass


@dataclass(frozen=True)
class ReviewSummary:
    review_id: int
    title: str
    approved: bool


def summarize_review(review):
    return ReviewSummary(
        review_id=review.id,
        title=review.title,
        approved=review.status == "approved",
    )

Bad Code

review_summary.py
def summarize_review(review):
    return {
        "id": review.id,
        "name": review.title,
        "ok": review.status == "approved",
    }

Review Notes

What to review

Good Code

The good version gives the shape a name and makes every field explicit.

Bad Code

The bad version returns a loose dictionary with vague keys. Callers have to remember what "name" and "ok" mean, and typos will be found late.

Takeaways

  • A named data shape makes fields, defaults, and equality behavior easier to review.