我试图通过获取枚举成员名称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**
请为我提供上述问题的替代解决方案。
答案 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)
答案 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