Mediumenum

Что такое enum (Enum)?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

enum (Python 3.4) — перечисления. Для фиксированных наборов констант (статусы, типы, modes). Enum immutable, singleton каждого значения (Color.RED is Color.RED), hashable.

from enum import Enum, IntEnum, Flag, auto, unique

@unique   # проверяет уникальность значений
class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

Color.RED.value   # 1
Color.RED.name    # 'RED'
Color(1)          # Color.RED (по value)
Color['RED']      # Color.RED (по name)
for c in Color: print(c)   # итерация

# IntEnum — можно сравнивать с int
class Priority(IntEnum):
    LOW, MEDIUM, HIGH = range(3)

# Flag — bitwise OR
class Perm(Flag):
    R = 4; W = 2; X = 1
    RW = R | W
  • auto() — auto value; StrEnum (Python 3.11) — str + Enum;
  • Custom __init__ для дополнительных данных;

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.