이전의 내용에서 유저에 관한 모델을 생각해보자.
이를 단순히 작성하면 아래와 같을 것이다.
class UserIn(BaseModel):
username: str
password: str
email: EmailStr
full_name: Optional[str] = None
class UserOut(BaseModel):
username: str
email: EmailStr
full_name: Optional[str] = None
class UserInDB(BaseModel):
username: str
hashed_password: str
email: EmailStr
full_name: Optional[str] = None
딱 봐도 중복된 내용이 너무나도 많다.
상속을 이용하여 깔끔하게 정리하면 아래와 같다.
class UserBase(BaseModel):
username: str
email: EmailStr
full_name: Optional[str] = None
class UserIn(UserBase):
password: str
class UserOut(UserBase):
pass
class UserInDB(UserBase):
hashed_password: str
UserBase
라는 추상 pydantic 모델을 만들어 놓고 각각의 클래스에 상속하여 사용하는 것을 볼 수 있다.
pydantic 모델 객체를 파이썬 딕셔너리로 바꿀 수 있다.
만약
user_in = UserIn(username="john", password="secret", email="john.doe@example.com")
와 같이 정의가 되어 있다면,
user_dict = user_in.dict()
와 같이 딕셔너리로 바꿀 수 있다.