我有一个Enum
像这样:
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
或{Animal
时避免使用try
语句。在
什么是一个纯粹的Python等价物Enum.__call__
?在
更新2017-03-30
在Python3.6(和^{} 1)中,您可以指定一个
_missing_
方法,该方法将被调用以在引发ValueError
之前给您的类最后一次机会。现在您可以:原始答案
明确一点:您需要与}中)。在
__call__
相关联的Animal()
,它实际上在元类中(EnumMeta
在{这是一袋你不想进去的虫子,因为很容易弄坏东西。在
有关详细信息,请参见this answer,但简单的解决方案是为您的
^{pr2}$Animal
枚举创建一个get
方法:然后
Animal.get('wolf')
将返回Animal.never_heard_of
。在1公开:我是Python stdlib ^{} 、^{} backport 和{a5}库的作者。在
相关问题 更多 >
编程相关推荐