我有一堆IntFlag
类型,并且我希望经常将字符串列表从配置文件转换为这些类型的成员。我目前的计划是扩展IntFlag
:
class BetterIntFlag(IntFlag):
@classmethod
def parse(cls, items):
value = cls(0)
for item in items:
value |= cls[item]
return value
我对这种解决方案感到满意,但是我不禁要感到自己缺少一种简洁的内置方法来实现这一目标。
我在3.3中使用了反向枚举。
答案 0 :(得分:1)
如果通过反向移植是指aenum
1 ,它是内置的:
from aenum import IntFlag
class Color(IntFlag):
red = 1
green = 2
blue = 4
并在使用中:
--> Color['red|blue']
<Color.blue|red: 5>
--> items = ['red', 'blue']
--> Color['|'.join(items)]
<Color.blue|red: 5>
1 披露:我是Python stdlib Enum
,enum34
backport和Advanced Enumeration (aenum
)库的作者。