第十章:模型继承与泛型
10.1 继承:DRY 原则
python
class BaseUser(BaseModel):
model_config = ConfigDict(str_strip_whitespace=True)
name: str
class AdminUser(BaseUser): # 继承字段 + 配置 + 验证器
permissions: list[str]继承会带走父类的一切:字段、配置、验证器。非常适合做"公共字段抽基类"。
10.2 泛型模型:标准化的接口响应
后端接口常见的统一返回格式,用泛型写一次就够了:
python
from typing import Generic, TypeVar
from pydantic import BaseModel
T = TypeVar("T")
class ApiResponse(BaseModel, Generic[T]):
code: int
message: str
data: T | None = None
class User(BaseModel):
name: str
# 使用时指定具体类型
resp = ApiResponse[User].model_validate({
"code": 0, "message": "ok", "data": {"name": "小明"}
})
print(resp.data.name) # 小明 —— data 被校验成了 User 类型!泛型让 data 字段既能复用外壳,又能享受完整的类型校验和 IDE 提示。