Python Glossary English

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Сообщить о неточности