python/응용
Pydantic 으로 dataclass 대체하기
wefree
2023. 7. 29. 22:13
https://wefree.tistory.com/280 의 dataclass 기능을 pydantic 2.x 로 대체해 보자
import random
import string
from typing import Any
from pydantic import BaseModel, Field, ConfigDict
def generate_id() -> str:
return ''.join(random.choices(string.ascii_lowercase, k=12))
class Person(BaseModel):
name: str
phone_numbers: list[str] = []
id: str = Field(default_factory=generate_id)
@property
def phone_numbers_len(self) -> int:
return len(self.phone_numbers)
model_config = ConfigDict(frozen=True)
def model_post_init(self, __context: Any) -> None:
pass