Pydantic中model_config是否为保留关键字?版本差异为何表现不同?
关于Pydantic中
model_config作为字段名的问题 model_config在Pydantic的v2及后续版本中属于保留关键字,不能用作模型字段名,否则会触发你遇到的「model_config被用作模型字段」错误;但在Pydantic v1版本中,它并非保留关键字,因此可以正常作为字段名使用。
具体差异说明
Pydantic v1:没有将
model_config作为配置属性的标准用法,此时该名称只是普通字段名,不会触发报错。示例代码:from pydantic import BaseModel class MyModel(BaseModel): model_config: str obj = MyModel(model_config="demo") print(obj.model_config) # 正常输出 "demo"Pydantic v2:引入
model_config作为定义模型配置的标准方式(替代v1的Config类),该名称被系统占用为模型的配置属性,因此无法再用作字段名。如果强行使用,会直接抛出错误。
特殊情况处理(不推荐)
若在v2中确实需要使用类似命名,可通过修改模型配置的protected_namespaces来绕过检查,但这种做法会破坏Pydantic的默认规范,不建议使用:
from pydantic import BaseModel class MyModel(BaseModel): model_config: str model_config = {"protected_namespaces": ()} # 清空受保护命名空间 obj = MyModel(model_config="demo") print(obj.model_config) # 输出 "demo"
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

