如何将字典传入类,动态定义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
相关产品推荐
相关产品推荐

