PYTHON

Efficiently Define Data-Holding Classes with `dataclasses`

Learn how to use Python's `dataclasses` module to quickly create classes primarily used for storing data, reducing boilerplate code for `__init__`, `__repr__`, and `__eq__`.

from dataclasses import dataclass, field

@dataclass
class UserProfile:
    user_id: int
    username: str
    email: str = field(default="[email protected]")
    is_active: bool = True
    roles: list[str] = field(default_factory=list)

# Creating instances
user1 = UserProfile(user_id=1, username="alice", email="[email protected]")
user2 = UserProfile(user_id=2, username="bob")
user3 = UserProfile(user_id=3, username="charlie", roles=["admin", "editor"])

print(user1)
print(user2)
print(user3)

# Dataclasses provide __eq__ automatically
user4 = UserProfile(user_id=1, username="alice", email="[email protected]")
print(f"User1 == User4: {user1 == user4}")

# Modifying a list field
user1.roles.append("viewer")
print(user1)
How it works: The `dataclasses` module provides a decorator to automatically generate common boilerplate methods (`__init__`, `__repr__`, `__eq__`, etc.) for classes primarily used to hold data. This significantly simplifies code, especially when defining data transfer objects (DTOs) or configuration structures. `field` allows custom default values and factory functions for mutable defaults, preventing unexpected shared state issues.

Need help integrating this into your project?

Our team of expert developers can help you build your custom application from scratch.

Hire DigitalCodeLabs