Python Glossary English

Python 3.6+enumпонятие

enum.Flag

флаги

Перечисление битовых флагов: члены комбинируются операторами | & ^ ~.

Синтаксис

class C(enum.Flag): ...

Значения членов должны быть отдельными битами: auto() внутри Flag выдаёт 1, 2, 4 и так далее, а написанное руками 3 создаст не новый флаг, а псевдоним комбинации, который не появится при обходе класса. В отличие от IntFlag, член Flag не является числом, и это плюс: случайно сравнить или сложить его с посторонним int не выйдет. Пустая комбинация (значение 0) ложна в булевом контексте, так что обычная проверка на истинность отвечает на вопрос «взведён ли хоть один флаг».

Примеры

import enum
class Perm(enum.Flag):
    R = 1
    W = 2
    X = 4
print((Perm.R | Perm.W).value)      # → 3
print(Perm.R in (Perm.R | Perm.W))  # → True

См. также

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