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

Python
Create a simple data class.
from dataclasses import dataclass

@dataclass
class User:
    name: str
    age: int

user = User("Alice", 25)
print(user)

Default Values

Python
Define a default field value.
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__.

Python
Dataclass objects can be compared by their fields.
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.

Python
Create an immutable-style dataclass.
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.

Python
Run additional logic after initialization.
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.