假设,我有
class State(Enum):
TAKEPROFIT = 1
STOPPEDOUT = 2
WINNER = 3
LOSER = 4
如何返回egState.STOPPEDOUT
和的组合State.LOSER
?
似乎|
不支持:
return State.STOPPEDOUT | State.LOSER
投掷
TypeError: unsupported operand type(s) for |: 'State' and 'State'
使用 an
IntEnum
代替Enum
:An 的
IntEnum
行为类似于int
,因此:虽然 @larsks 的答案是正确的,但“更”正确的方法是继承
IntFlag
(auto()
生成 2 的幂;如果您选择,可以使用自己的值):|
,&
并且^
操作会产生同一类的实例:in
还支持以下操作:IntFlag
int
是and的子类Flag
(它又是 的子类Enum
),因此它的实例可以在任何int
需要 an 的地方使用:但是,如果 an
IntFlag
被反转,它将返回其余标志的并集:枚举有一个 value 属性: