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

如何将字典传入类,动态定义ValueOrderedEnum子类枚举成员

实现方法

你给出的字典存在语法缺失(变量名和字典内容之间缺赋值等号),且字典值为字符串类型,和你手动定义的枚举类整数值类型不匹配,先做修正和类型转换后,直接在类定义时解包字典即可自动生成所有枚举成员,无需逐行手动编写。

完整示例代码

# 导入你使用的ValueOrderedEnum,按你实际安装的库对应导入路径即可
from ordered_enum import ValueOrderedEnum

# 修正原字典语法,若需要枚举值为整数(和你手写的类逻辑一致)就做类型转换
my_dict = {'Blood':'4','Phlegm':'3','YellowBile':'2','BlackBile':'1'}
humor_members = {name: int(value) for name, value in my_dict.items()}

# 解包字典生成枚举类,和你手动逐行写成员的效果完全一致
class Humor(ValueOrderedEnum, **humor_members):
    pass

效果验证

生成的类和你手写的版本行为完全一致,支持基于值的排序比较:

# 比较逻辑符合预期,返回True
print(Humor.Blood > Humor.Phlegm > Humor.YellowBile > Humor.BlackBile)
# 可以正常访问所有成员
print(Humor.Blood.value)  # 输出4

如果你不需要把值转成整数,想保留原字典的字符串值,直接解包原my_dict即可,只是此时枚举值比较会按字符串规则执行,和你手写的整数枚举逻辑有差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:27:40