英文:
Pythonic way to map enum to api values
问题
I have a proto generated code which has 3 values (values I am interested in):
proto_type.VALUE1
proto_type.VALUE2
proto_type.VALUE3
I have created an enum in my python project.
class MyEnum(Enum):
VALUE1 = 0
VALUE2 = 1
VALUE3 = 2
The sole reason I have done this is so that I can restrict the callee to use specific values. Now I want to map MyEnum
to proto_type
values.
I was thinking of creating a dictionary, i.e.,
Mapping = {
MyEnum.Value1: imported_proto_type.VALUE1,
MyEnum.Value2: imported_proto_type.VALUE2,
MyEnum.Value3: imported_proto_type.VALUE3,
}
What I wanted to ask is this the best pythonic way to do so? Is there any better approach?
英文:
I have a proto generated code which has 3 values (values i am interested in)
proto_type.VALUE1
proto_type.VALUE2
proto_type.VALUE3
I have created an enum in my python project.
class MyEnum(Enum):
VALUE1 = 0
VALUE2 = 1
VALUE3 = 2
The sole reason i have done this so that i can restrict callee to use specific values. Now I want to map MyEnum
to proto_type
values.
I was thinking to create a dictionary i.e.,
Mapping = {
MyEnum.Value1: imported_proto_type.VALUE1,
MyEnum.Value2: imported_proto_type.VALUE2,
MyEnum.Value3: imported_proto_type.VALUE3,
}
What i wanted to ask is this best pythonic way to do so? Is there any better approach?
答案1
得分: 2
为什么不直接在你的枚举中使用生成的 proto 值?
class MyEnum(Enum):
VALUE1 = imported_proto_type.VALUE1
VALUE2 = imported_proto_type.VALUE2
VALUE3 = imported_proto_type.VALUE3
然后,如果你有:
x = MyEnum.VALUE1
你可以通过以下方式直接获取 proto 值:
x.value
英文:
Why not just use the proto generated values in your Enum?
class MyEnum(Enum):
VALUE1 = imported_proto_type.VALUE1
VALUE2 = imported_proto_type.VALUE2
VALUE3 = imported_proto_type.VALUE3
Then if you have:
x = MyEnum.VALUE1
You can get at the proto value directly by writing:
x.value
答案2
得分: 1
使用字典进行映射是一种非常常见且容易理解的做法。现在有一种不需要映射的处理方式。如果proto_type
中的值是整数,那么可以采用以下方式。
from enum import IntEnum
class MyEnum(IntEnum):
VALUE1 = proto_type.VALUE1
VALUE2 = proto_type.VALUE2
VALUE3 = proto_type.VALUE3
现在可以这样使用。
MyEnum.VALUE1.value
英文:
Using dictionary for mapping is very common and easy to understand practice. Now there is another way to handle this without mapping. If the values in proto_type
are integers that following way would be better.
from enum import IntEnum
class MyEnum(IntEnum):
VALUE1 = proto_type.VALUE1
VALUE2 = proto_type.VALUE2
VALUE3 = proto_type.VALUE3
Now you can use this as follow.
MyEnum.VALUE1.value
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论