Функция Enum _missing_ не подавляет ValueErrorPython

Программы на Python
Anonymous
Функция Enum _missing_ не подавляет ValueError

Сообщение Anonymous »

Я пытаюсь настроить Enum, который будет возвращать None, если значение не найдено. В документации упоминается функция _missing_, но не поясняются никакие подробности относительно этой функции:

Код: Выделить всё

_missing_
– функция поиска, используемая, если значение не найдено; может быть переопределен


После некоторого осмотра выяснилось, что это метод класса с сигнатурой cls, value, поэтому я попытался его настроить, но он не работает.

Код: Выделить всё

>>> class G(enum.Enum):
...   @classmethod
...   def _missing_(cls, value):
...     return None
...   a = 1
...
>>> G(1)

>>> G(2)
Traceback (most recent call last):
...
ValueError: 2 is not a valid G
>>> G['b']
KeyError: 'b'
>>> G.b
AttributeError: b
Поиск в Google показывает, что _missing_ улавливает ValueError только в случае вызова, поэтому KeyError и TypeError меня не удивляют, но я не знаю, почему G(2) выдает ValueError вместо возврата None.

Подробнее здесь: https://stackoverflow.com/questions/599 ... valueerror

Вернуться в «Python»