You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pydantic模型继承优化:无需重复输入父模型属性的实现方法

解决方案:无需重复父模型属性创建子模型实例

当然可以不用重复输入父类属性,利用Pydantic模型的字段导出功能就能轻松实现,以下是两种常用方法:

方法1:展开父模型实例的字段字典

先创建父模型model_A的实例,然后用**运算符展开它的字段字典,再补充子模型model_B的新增字段即可:

class model_A(BaseModel):
    Name: str
    Age: int
    phone: int

class model_B(model_A):
    email: str
    location: str

# 创建父模型实例
A = model_A(Name="Jon", Age=20, phone=123)
# 展开父实例属性,补充子模型字段创建B
B = model_B(**A.dict(), email="test@123", location="Earth")

方法2:Pydantic v2 专属简化方式

如果你用的是Pydantic v2版本,可以用model_dump()(替代v1的dict())结合字典合并,或者直接用model_copy方法:

# 方式一:字典合并
B = model_B.model_validate(A.model_dump() | {"email": "test@123", "location": "Earth"})

# 方式二:model_copy 更新字段(需确保父实例可转为子模型类型)
B = A.model_copy(update={"email": "test@123", "location": "Earth"}, model=model_B)

注意事项

  • 父模型的字段必须满足子模型的验证规则(因为子模型继承了父模型的字段约束)
  • 如果父模型有私有字段或不想导出的字段,可以用dict(exclude={"字段名"})或model_dump(exclude={"字段名"})过滤掉

内容的提问来源于stack exchange,提问作者Masterstack8080

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 10:18:33