如何在Python的enum.Enum中使用数字等无效标识符作为成员名?
Python 要求类属性名必须为合法标识符,不能纯由数字组成或以数字开头,因此无法直接通过类声明的方式定义这类成员名的枚举,有两种成熟的解决方案可选:
方案1:使用枚举的函数式声明语法(完全匹配你需要的数字键映射)
直接调用enum.Enum构造方法传入字典,键为你需要的数字字符串,值为对应的枚举值。这种方式定义的枚举支持通过下标直接取对应数字的枚举成员,完全匹配你的映射需求:
import enum my_enum = enum.Enum('my_enum', { '0': 1, '1': 2, '2': 3, '3': 4 }) # 访问示例 print(my_enum['0'].value) # 输出1 print(my_enum(1)) # 按值查找,输出 my_enum.0
方案2:给枚举成员起可读别名(更推荐,支持点语法访问)
如果不需要强制用数字作为成员名,仅需要保证枚举值和数据库定义对齐,可以给成员起合法的标识符别名,枚举值对应数据库的枚举字符串,代码可读性更高:
import enum class MyEnum(enum.Enum): STATUS_0 = '0' STATUS_1 = '1' STATUS_2 = '2' STATUS_3 = '3' # 访问示例 print(MyEnum.STATUS_0.value) # 输出 '0',可直接传入数据库操作
两种方案都可以完美适配数据库的枚举类型映射,可根据自己的代码习惯选择。
内容的提问来源于stack exchange,提问作者Karen
相关产品推荐
相关产品推荐

