我有一个这样定义的枚举:
def enum(**enums):
return type('Enum', (), enums)
Status = enum(
STATUS_OK=0,
STATUS_ERR_NULL_POINTER=1,
STATUS_ERR_INVALID_PARAMETER=2)
我有一个以 Status
枚举形式返回状态的函数。
如何获取枚举值的名称,而不仅仅是值?
>>> cur_status = get_Status()
>>> print(cur_status)
1
我想获得 STATUS_ERR_NULL_POINTER
,而不是 1
最佳答案
您必须遍历类属性才能找到匹配的名称:
name = next(name for name, value in vars(Status).items() if value == 1)
生成器表达式循环遍历属性及其值(取自 vars()
function 生成的字典),然后返回与值 1
匹配的第一个。
enum
library 更好地模拟枚举, 在 Python 3.4 中可用或作为 backport for earlier versions :
from enum import Enum
class Status(Enum):
STATUS_OK = 0
STATUS_ERR_NULL_POINTER = 1
STATUS_ERR_INVALID_PARAMETER = 2
允许您访问名称和值:
name = Status(1).name # gives 'STATUS_ERR_NULL_POINTER'
value = Status.STATUS_ERR_NULL_POINTER.value # gives 1
关于python - 如何取回枚举元素的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29880323/