РЕДАКТИРОВАТЬ: Это действительно не работает, когда я подкласс класса ValidatedEnum
. Любая помощь с благодарностью получена.
Решение с использованием _missing_
оказалось довольно простым, оказывается! Спасибо за идею @ EthanFurman.
from enum import Enum
class ValidatedEnum(Enum):
electricity = 1
gas = 2
water = 3
@classmethod
def _missing_(cls, value):
choices = list(cls.__members__.keys())
raise ValueError("%r is not a valid %s, please choose from %s" % (value, cls.__name__, choices))
<ipython-input-1-8b49d805ac2d> in _missing_(cls, value)
8 def _missing_(cls, value):
9 choices = list(cls.__members__.keys())
---> 10 raise ValueError("%r is not a valid %s, please choose from %s" % (value, cls.__name__, choices))
11
ValueError: 'electric' is not a valid ValidatedEnum, please choose from ['electricity', 'gas', 'water']