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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:12:09