Превратить список строк в IntFlag - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть куча 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 голосов
/ 21 ноября 2018

Если под бэкпортом вы подразумеваете 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) библиотека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...