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

如何创建含关键字‘class’成员的Python类(适配字典转类)

解决Pydantic BaseModel中使用Python关键字作为字段名的问题

因为class是Python的保留关键字,不能直接作为类属性名,你可以用Pydantic的字段别名功能来映射字典里的class键,下面是两种实用的解决方法:

方法一:使用Field别名定义字段

用合法的变量名(比如class_)代替关键字,通过Field(alias="class")指定它对应字典里的class键,实例化时直接传**my_dict即可:

from pydantic import BaseModel, Field

class MyClass(BaseModel):
    class_: str = Field(alias="class")

# 测试用字典
my_dict = {"class": "demo-class"}

# 转换为类实例
my_class = MyClass(**my_dict)

# 访问字段
print(my_class.class_)  # 输出: demo-class
# 如果需要序列化回原键名的字典
print(my_class.model_dump(by_alias=True))  # 输出: {'class': 'demo-class'}

方法二:兼容旧版Pydantic(v1)的写法

如果你用的是Pydantic v1,配置方式略有不同,但核心逻辑一样:

from pydantic import BaseModel, Field

class MyClass(BaseModel):
    class_: str = Field(alias="class")

    class Config:
        allow_population_by_field_name = True  # 允许同时通过字段名和别名赋值

my_dict = {"class": "demo-class"}
my_class = MyClass(**my_dict)
print(my_class.class_)  # 输出: demo-class

注意:实例化后访问该字段时要用你定义的变量名(比如class_),如果需要输出带原键名的字典,记得用model_dump(by_alias=True)(v2)或dict(by_alias=True)(v1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:20:27