我有一堆 IntFlag 类型,我希望经常将配置文件中的字符串列表转换为这些类型的成员。我目前的计划是延长 英特尔旗 :
IntFlag
英特尔旗
class BetterIntFlag(IntFlag): @classmethod def parse(cls, items): value = cls(0) for item in items: value |= cls[item] return value
我对这个解决方案很满意,但我禁不住觉得我一定缺少一种简洁的内置方式来实现这一点。
我在3.3号,有反向的枚举。
如果你说的是反向端口 aenum 一 ,内置:
aenum
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>
一 披露:我是 Python stdlib Enum ,的 enum34 backport 和 Advanced Enumeration ( aenum ) 图书馆。
Enum
enum34