我有一个原型生成的代码,它有 3 个值(我感兴趣的值)
proto_type.VALUE1
proto_type.VALUE2
proto_type.VALUE3
我在我的 python 项目中创建了一个枚举。
class MyEnum(Enum):
VALUE1 = 0
VALUE2 = 1
VALUE3 = 2
我这样做的唯一原因是我可以限制被调用者使用特定值。现在我想将
MyEnum
映射到proto_type
值。
我想创建一本字典,即,
Mapping = {
MyEnum.Value1: imported_proto_type.VALUE1,
MyEnum.Value2: imported_proto_type.VALUE2,
MyEnum.Value3: imported_proto_type.VALUE3,
}
我想问的是这样做的最佳 pythonic 方式吗?有没有更好的方法?
使用字典作图是很常见也很容易理解的做法。现在有另一种无需映射即可处理此问题的方法。如果
proto_type
中的值是整数,那么下面的方法会更好。
from enum import IntEnum
class MyEnum(IntEnum):
VALUE1 = proto_type.VALUE1
VALUE2 = proto_type.VALUE2
VALUE3 = proto_type.VALUE3
现在您可以按如下方式使用它。
MyEnum.VALUE1.value
为什么不直接在枚举中使用原型生成的值?
class MyEnum(Enum):
VALUE1 = imported_proto_type.VALUE1
VALUE2 = imported_proto_type.VALUE2
VALUE3 = imported_proto_type.VALUE3
那么如果你有:
x = MyEnum.VALUE1
您可以通过以下方式直接获取原型值:
x.value