Python Dataclasses
The dataclasses module provides a convenient way to create classes mainly used for storing data. It automatically generates common methods such as __init__ and __repr__.
Create a Dataclass
from dataclasses import dataclass
@dataclass
class User:
name: str
age: int
user = User("Alice", 25)
print(user)
Default Values
from dataclasses import dataclass
@dataclass
class Product:
name: str
price: float = 0.0
product = Product("Laptop")
print(product)
Automatic Methods
Dataclasses automatically provide useful methods such as __init__, __repr__, and __eq__.
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
p1 = Point(10, 20)
p2 = Point(10, 20)
print(p1 == p2)
Frozen Dataclasses
Use frozen=True when you want instances to prevent normal field reassignment after creation.
from dataclasses import dataclass
@dataclass(frozen=True)
class Point:
x: int
y: int
point = Point(10, 20)
print(point)
Custom Initialization Logic
The __post_init__ method runs automatically after the generated __init__ method.
from dataclasses import dataclass
@dataclass
class User:
name: str
age: int
def __post_init__(self):
self.name = self.name.strip()
user = User(" Alice ", 25)
print(user.name)
When to Use Dataclasses
Dataclasses are useful for configuration objects, API models, application data, DTOs, and other classes whose main purpose is storing structured data.
Summary
Python dataclasses reduce boilerplate when creating data-focused classes. The @dataclass decorator provides generated methods while still allowing custom methods and initialization logic.