如何在Python中将Pydantic派生类实例转换为基类?
Pydantic派生类转基类的实现方法
方法1:通过字段过滤构造基类实例
利用Pydantic模型的model_dump()方法导出数据,只保留基类定义的字段,再传入基类构造函数完成转换:
from pydantic import BaseModel class A(BaseModel): a: str class B(A): b: int # 示例B类型实例 x = B(a="sample_data", b=789) # 转换为A类型 a_instance = A(**x.model_dump(include=A.model_fields.keys()))
方法2:使用Pydantic v2的model_copy()方法
如果是Pydantic v2版本,可以直接通过model_copy()指定目标模型类型,自动忽略派生类的额外字段:
a_instance = x.model_copy(update={}, model=A)
方法3:在派生类中封装转换方法
在派生类里定义一个转换方法,直接返回基类实例,代码逻辑更直观:
class B(A): b: int def convert_to_base(self) -> A: return A(a=self.a) # 调用转换方法得到A实例 a_instance = x.convert_to_base()
内容的提问来源于stack exchange,提问作者Itai Bar
相关产品推荐
相关产品推荐

