Sobes.tech
Junior — Middle

What are the differences in capabilities and approaches when using pydantic and dataclasses in Python?

sobes.tech AI

Answer from AI

dataclasses is a built-in Python module that allows for quick creation of classes with automatic generation of methods such as __init__, __repr__, and others. It simplifies the creation of simple data structures but does not provide built-in validation or complex serialization.

pydantic is a third-party library that extends the capabilities of dataclasses by adding strict type validation, data transformation, and convenient serialization/deserialization. Pydantic is actively used for working with data from external sources (e.g., JSON), ensuring data correctness.

Main differences:

  • Validation: pydantic automatically checks types and values when creating an object, dataclasses do not.
  • Transformation: pydantic can convert input data into the required types (e.g., string to date).
  • Performance: dataclasses are faster because they are simpler.
  • Usage: dataclasses are suitable for simple structures, pydantic for complex models with validation.

Example with pydantic:

from pydantic import BaseModel
from datetime import datetime

class User(BaseModel):
    id: int
    name: str
    signup_ts: datetime = None

user = User(id='123', name='Alice', signup_ts='2023-01-01T12:00:00')
print(user)

Here, pydantic converts the string to datetime and checks the types.