Функция 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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