Python 3.11+enumпонятие
enum.FlagBoundary
флаги
Стратегия обработки битов вне определённых флагов: STRICT/CONFORM/EJECT/KEEP (Python 3.11+).
Синтаксис
enum.FlagBoundary
Отвечает на вопрос, что делать, если в значении оказался бит, которого нет ни в одном члене. Умолчания разные, и об это чаще всего спотыкаются: у Flag это STRICT, поэтому неизвестный бит даёт ValueError, а у IntFlag это KEEP, и лишний бит молча сохраняется в члене. Стратегия задаётся ключевым словом boundary прямо в заголовке класса.
Примеры
import enum
print(enum.FlagBoundary.STRICT.name) # → STRICT
print(list(enum.FlagBoundary.__members__)) # → ['STRICT', 'CONFORM', 'EJECT', 'KEEP']
import enum
class Perm(enum.Flag): R = 1; W = 2
print(Perm(5)) # → ValueError
import enum
class Soft(enum.Flag, boundary=enum.CONFORM): R = 1; W = 2
print(Soft(5).value) # → 1
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности