问题描述
我想创建一个Pydantic模型,其中有一个列表字段,未进行初始化的默认值为空列表。有没有惯用的方式做到这一点?
对于Python的内置数据类对象,您可以使用field(default_factory=list)
,但是在我自己的实验中,这似乎可以防止Pydantic模型被腌制。天真的实现可能是这样的:
from pydantic import BaseModel
class Foo(BaseModel):
defaulted_list_field: Sequence[str] = [] # Bad!
解决方法
Pydantic也有default_factory
parameter:
from typing import Sequence
from pydantic import BaseModel,Field
class Foo(BaseModel):
defaulted_list_field: Sequence[str] = Field(default_factory=list)