Python Glossary English

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Сообщить о неточности