Python 3.6+enumфункция
enum.Enum._missing_()
обработка
Классовый метод _missing_() вызывается, когда значение не найдено в перечислении (через Enum(value)).
Синтаксис
@classmethod
def _missing_(cls, value): ...
Срабатывает только при поиске по значению — Enum(value); обращение по имени через Enum['NAME'] и доступ к атрибуту его не задействуют. Вернуть нужно элемент этого же перечисления или None (тогда как обычно поднимется ValueError): любой другой объект приведёт к TypeError. Типичное применение — мягкие псевдонимы: подобрать элемент по строке без учёта регистра или отдать значение по умолчанию вместо исключения.
Примеры
from enum import Enum
class Color(Enum):
RED = 1; GREEN = 2
@classmethod
def _missing_(cls, value):
return cls.RED # значение по умолчанию
Color(99) # → <Color.RED: 1>
Color(0) # → <Color.RED: 1>
Color(1) # → <Color.RED: 1>
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности