Python Glossary English

Python 3.6+enumпонятие

enum.IntFlag

флаги

Битовые флаги, которые ещё и int: комбинируются и сравниваются как числа.

Синтаксис

class C(enum.IntFlag): ...

У IntFlag по умолчанию boundary=KEEP: значение с битом, которого нет ни в одном члене, не бросит ошибку, а сохранится как есть — испорченную маску придётся ловить самому. Плюс член свободно сравнивается и участвует в арифметике с обычными int, так что смешать его с посторонним числом легко. Разумно брать IntFlag там, где значение уходит наружу — в системный вызов, флаги re, упакованное битовое поле; для внутренней логики чище Flag.

Примеры

import enum
class Mode(enum.IntFlag):
    A = 1
    B = 2
print((Mode.A | Mode.B) == 3)   # → True

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности