将字符串列表转换为“ IntFlag”

时间:2018-11-21 03:59:01

标签: python enums

我有一堆IntFlag类型,并且我希望经常将字符串列表从配置文件转换为这些类型的成员。我目前的计划是扩展IntFlag

class BetterIntFlag(IntFlag):
    @classmethod
    def parse(cls, items):
        value = cls(0)
        for item in items:
            value |= cls[item]
        return value

我对这种解决方案感到满意,但是我不禁要感到自己缺少一种简洁的内置方法来实现这一目标。

我在3.3中使用了反向枚举。

1 个答案:

答案 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 Enumenum34 backportAdvanced Enumeration (aenum)库的作者。