【发布时间】:2016-09-08 02:13:49
【问题描述】:
我有一个这样的 Python 枚举:
from enum import Enum, unique
@unique
class Levels(Enum):
Unknown = 0
Warning = 1
Error = 2
def __eq__(self, other): return self.value == other.value
def __ne__(self, other): return self.value != other.value
def __lt__(self, other): return self.value < other.value
def __le__(self, other): return self.value <= other.value
def __gt__(self, other): return self.value > other.value
def __ge__(self, other): return self.value >= other.value
__MAPPING__ = {
"warn": Warning,
"error": Error
}
@classmethod
def Parse(cls, value, default=None):
return cls.__MAPPING__.get(value, default)
在这个例子中,我已经将映射提取到一个类成员中(根据timeit.timeit(),它更快)。
我现在的问题是,dict 值使用原始枚举成员值(整数)而不是创建的枚举成员(EnumMeta)。这是合理的,因为在构造 dict 时不存在。
我如何/在哪里可以挂钩到 Enum 类/EnumMeta 类或我自己的 Levels 类,以使用创建的枚举成员修补字典?
【问题讨论】:
标签: python-3.x enums metaclass