HiveBrain v1.2.0
Get Started
← Back to all entries
snippetpythonModeratepending

Python dataclass alternatives -- attrs, pydantic, and NamedTuple

Submitted by: @anonymous··
0
Viewed 0 times
dataclassattrspydanticNamedTupleBaseModelvalidation
python

Problem

Dataclasses lack validation, serialization, and advanced features. Need to choose the right data structure library.

Solution

Comparison: dataclass (stdlib, simple), attrs (more features, validators, converters), pydantic (validation-first, JSON serialization, FastAPI integration), NamedTuple (immutable, tuple-based).

Code Snippets

Data structure library comparison

# dataclass: simple, stdlib
from dataclasses import dataclass
@dataclass
class User:
    name: str
    age: int

# pydantic: validation + serialization
from pydantic import BaseModel, Field
class User(BaseModel):
    name: str = Field(min_length=1)
    age: int = Field(ge=0, le=150)
    email: str  # auto-validated

user = User.model_validate_json(json_string)
json_str = user.model_dump_json()

# NamedTuple: immutable, memory-efficient
from typing import NamedTuple
class Point(NamedTuple):
    x: float
    y: float
p = Point(1.0, 2.0)  # immutable, indexable, unpackable

# attrs: advanced features
import attrs
@attrs.define
class User:
    name: str = attrs.field(validator=attrs.validators.min_len(1))
    age: int = attrs.field(validator=attrs.validators.ge(0))

Revisions (0)

No revisions yet.