У меня есть Enum
так:Перекрытие Enum __call__ метод
from enum import Enum
class Animal(Enum):
cat = 'meow'
dog = 'woof'
never_heard_of = None
def talk(self):
print(self.value)
Я хотел бы переопределить метод __call__
так, что вызов, как Animal('hee-haw')
возвращает Animals.never_heard_of
или None
вместо повышения ValueError
. Я бы предпочел избегать заявления try
каждый раз, когда я звоню Animal
.
Что было бы чистым эквивалентом Python Enum.__call__
?
Почему бы вам просто не использовать, например. 'dict (cat = 'meow', dog = 'woof'). get (что угодно)'? Это похоже на странное использование перечислителя. – jonrsharpe
@jonrsharpe: Я был после неизменного набора констант. Если константа не определена, она возвращает None. У меня могут быть логические логики в моей программе, чтобы рассказать мне о том, с каким программным обеспечением с электронными таблицами я буду взаимодействовать. –
Просьба указать контекст, в противном случае это, скорее всего, проблема [XY] (http://meta.stackexchange.com/q/66377/248731). – jonrsharpe