概要
使ってみました
簡単に言うと独自のクラスを扱うコレクションクラスを新しいクラスとして定義することができる機能です
環境
- macOS 11.7.10
- Python 3.11.6
- pydantic 2.5.3
サンプルコード
from typing import List
from pydantic import BaseModel, TypeAdapter
class User(BaseModel):
name: str
age : int
UserList = TypeAdapter(List[User])
if __name__ == "__main__":
# 単一データの場合 (TypeAdapterなし)
data = {
"name": "hawk",
"age": 10
}
user = User(**data)
print(user.name)
# 複数データの場合 (TypeAdapter あり)
data_list = [
{
"name": "snowlog",
"age": 20,
},
{
"name": "hawksnowlog",
"age": 30,
}
]
user_list = UserList.validate_python(data_list)
for user in user_list:
print(user.name)
# 複数データの場合 (TypeAdapter なし)
user_list: list[User]
for data in data_list:
user = User(**data)
user_list.append(user)
for user in user_list:
print(user.name)
解説
サンプルコードを見るのが一番理解できるかなと思います
TypeAdapter を使った場合はシリアライズが 1 行で完了しますが使っていない場合はシリアライズをわざわざループで回して行う必要があるので記述が面倒になります
これが TypeAdapter の一番の機能かなと思います
最後に
データベースのモデルなども使うことができるのか気になりました
CustomTypesという機能もありこれと組み合わせると更に便利に使うことができそうです
0 件のコメント:
コメントを投稿