snippetpythonModeratepending
Python dataclass alternatives -- attrs, pydantic, and NamedTuple
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.