Pydantic 中的继承/子类化问题

AKG*_*AKG 8 python pydantic fastapi

我发现了一个用于声明 Pydantic 模型的代码片段。那里使用的继承让我很困惑。

class RecipeBase(BaseModel):
  label: str
  source: str
  url: HttpUrl


class RecipeCreate(RecipeBase):
  label: str
  source: str
  url: HttpUrl
  submitter_id: int


class RecipeUpdate(RecipeBase):
  label: str
Run Code Online (Sandbox Code Playgroud)

我不确定在 RecipeCreate 和 RecipeUpdate 类中继承 RecipeBase 有什么好处。让我困惑的部分是,继承之后,为什么还必须重新声明标签、源和 URL,它们已经是 RecipeCreate 类中 RecipeBase 类的一部分?

Dje*_*eth 4

我\xe2\x80\x99d 说这是教程的疏忽。没有任何好处,只会造成混乱。通常,Base 用于所有重叠字段,并且仅在更改类型时重载它们(例如,XyzBasehasname: strXyzCreatehasname: str|None因为它在更新实例时不需要提供\xe2\x80\x99t。

\n

该教程没有很好地解释为什么设置是这样的。

\n