Python 3.4+enumпонятие
Итерация и сравнение Enum
базовый
Перечисления поддерживают итерацию по list(MyEnum) и сравнение через is / ==. IntEnum поддерживает <, >.
Синтаксис
list(MyEnum) # все элементы
for m in MyEnum: ...
member is MyEnum.X
Обычный Enum не равен своему значению: сравнение члена с числом или строкой даёт False — нужен либо .value, либо IntEnum/StrEnum. Итерация идёт в порядке определения, а не по возрастанию значений, и пропускает псевдонимы; чтобы увидеть их, смотрите __members__. Члены — синглтоны, поэтому для сравнения достаточно is, и это надёжнее ==, если в проект вдруг попадут два одинаковых по значению перечисления.
Примеры
from enum import Enum
class Day(Enum):
MON=1; TUE=2; WED=3
list(Day) # → [<Day.MON:1>, <Day.TUE:2>, <Day.WED:3>]
Day.MON is Day.MON # → True
Day.MON == Day.MON # → True
Day.MON == 1 # → False (Enum не совместим с int)
Day.MON in Day # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности