我可以很容易地创建一个类
class MyEnum(enum.Enum):
BOB = "bob"
RALPH = "ralph"
ETC = "etc"
然后我可以通过枚举值分配变量:
a = MyEnum('bob')
但是——我希望通过可能是正确值的事物来分配变量。一、 e,我想去
^{pr2}$
并让它们都工作,并且都映射到相同的枚举值。在
有没有一种不需要工厂化方法就可以做到这一点?我目前已经定义了一个create
方法,因此a = MyEnum.create('Bob')
可以工作,但我希望事情是无缝的。在
Tags:
你要找的东西叫做
_missing_
,从Python3.6开始在stdlib中可用,从2.0开始在aenum
1中都可以找到。在如果
_missing_
未能返回MyEnum
成员,则EnumMeta
将引发异常(因此_missing_
不必担心该部分)2。在1公开:我是Python stdlib ^{} 、^{} backport 和{a3}库的作者。在
感谢Aran Fey提起这个问题。在
这可以通过子类化^{} 来实现,后者是负责定义} 方法的metaclass。在
MyEnum('Bob')
调用的^{(请记住,所有枚举值都必须小写;即
BOB = 'Bob'
将不起作用。)演示:
^{pr2}$相关问题 更多 >
编程相关推荐