代码之家  ›  专栏  ›  技术社区  ›  Jan

返回两个枚举状态

  •  -1
  • Jan  · 技术社区  · 7 月前

    假设,我有

    class State(Enum):
        TAKEPROFIT  = 1
        STOPPEDOUT  = 2
        WINNER      = 3
        LOSER       = 4
    

    如何返回例如的组合。 State.STOPPEDOUT State.LOSER ?
    这个 | 似乎不受支持:

    return State.STOPPEDOUT | State.LOSER
    

    投掷

    TypeError: unsupported operand type(s) for |: 'State' and 'State'
    
    2 回复  |  直到 7 月前
        1
  •  4
  •   larsks    7 月前

    使用 IntEnum 而不是 Enum :

    from enum import IntEnum
    
    
    class State(IntEnum):
        TAKEPROFIT = 1
        STOPPEDOUT = 2
        WINNER = 3
        LOSER = 4
    

    IntEnum 表现得像 int 所以

    >>> State.STOPPEDOUT | State.LOSER
    6
    
        2
  •  0
  •   Daniel Viglione    7 月前

    枚举具有值属性:

    class State(Enum):
        TAKEPROFIT  = 1
        STOPPEDOUT  = 2
        WINNER      = 3
        LOSER       = 4
    
    State.STOPPEDOUT.value | State.LOSER.value # 6