Я хотел бы определить набор флагов (подкласс из enum.Flag
), причем некоторые флаги определены на основе других. Это похоже на белый флаг в примере: https://docs.python.org/3/library/enum.html#flag, но это не просто комбинация предыдущих флагов, но также требует своего собственного значения.
Моя первая попытка была:
from enum import Flag, auto
class MyFlag(Flag):
NONE = 0
DEFAULT = auto()
FIRST = auto() | DEFAULT
SECOND = auto() | DEFAULT
THIRD = auto()
ANY = FIRST | SECOND | THIRD
Но это вызвало ошибку: TypeError: unsupported operand type(s) for |: 'auto' and 'int'
Рабочая реализация должна дать:
>>> print(bool(MyFlag.FIRST & MyFlag.DEFAULT))
# prints True
>>> print(bool(MyFlag.THIRD & MyFlag.DEFAULT))
# prints False