从枚举类获取值,在该类中,运行时在Python中知道枚举成员名称

时间:2019-11-29 07:16:41

标签: python-3.x enums

我试图通过获取枚举成员名称runtime从Enum类获取枚举值。我正在尝试通过以下方式进行操作:

from enum import Enum


    class EnumList(Enum):

        foo = 1
        bar = 2
enumMemberName=input("Enter enum member name")
enumValue=repr(EnumList.enumMemberName)          // **AttributeError: enumMemberName**
enumValue=repr(EnumList.foo)                     // **working fine**

请为我提供上述问题的替代解决方案。

2 个答案:

答案 0 :(得分:2)

我想这就是你想要的:

修改:在OP反馈后修改了答案。

from enum import Enum


class EnumList(Enum):

    foo = 1
    bar = 2


enumMemberName=input("Enter enum member name")

enumMember = EnumList.foo
enumMemberTwo = EnumList[enumMemberName]

enumValue = EnumList[enumMemberName].value
enumValueStr = repr(EnumList[enumMemberName].value)

引用documentation for Enum

From Enum documentation

答案 1 :(得分:2)

您的期望是错误的。向Enum询问其成员之一会给您该成员:

>>> enumList[enumMemberName]   # if name is 'foo'  (also, notice square brackets)
<EnumList.foo: 1>              # expected output

如果您特别想要该值,则必须要求它:

>>> enumList[enumMemberName].value   # if name is 'foo'
1