如何通过在Python中动态传递“枚举成员名称”来获取“值”?
例如,请考虑以下枚举
import enum
class Animal(enum.Enum):
DOG = "This is Dog"
CAT = "This is cat"
LION = "This is Lion"
我想写一个类似下面的通用函数,它必须返回This is Dog
。
def get_enum_value("DOG"):
#
# SOME CODE HERE TO GET THE VALUE FOR THE GIVEN (METHOD ARGUMENT) ENUM PROPERTY NAME
#
答案 0 :(得分:1)
根据问题编辑答案:
内置的功能:
>>> Animal["DOG"].value
"This is Dog"
或
>>> member = "DOG"
>>> Animal[member].value
"This is Dog"
使该函数成为错误处理的唯一原因-例如,如果您要优雅地处理传入的非成员名称。
我看到两个可能的问题(您的函数名称和术语用法令人困惑):
.value
属性; value
和name
)实际上,我也知道第三个选项:
get_enum_value
是Animal
的方法,而不是您的缩进建议的独立函数)仅回答最后一个问题,解决方案类似于:
import enum
class Animal(enum.Enum):
#
DOG = "This is Dog"
CAT = "This is cat"
LION = "This is Lion"
#
def get_enum_value(self, enum_property_name):
return getattr(self, enum_property_name)
并在使用中:
>>> Animal.LION.get_enum_value('name')
'LION'
答案 1 :(得分:1)
完整的简化代码:
## Enum definition
import enum
class Animal(enum.Enum):
DOG = "This is Dog"
CAT = "This is cat"
LION = "This is Lion"
## method to return enum value when pass the enum member name
def get_enum_member_value(enum_member_name):
enum_member_value = Animal[enum_member_name].value
return enum_member_value
## execute the method and print the value
print(get_enum_member_value("DOG"))