我在Python枚举方面遇到了困难。我创建了一个包含各种字段的枚举类:
class Animal(Enum):
DOG = "doggy"
CAT = "cute cat"
我知道我可以通过传递
Animal("doggy")
来访问这个枚举值,即我会得到Animal.DOG
。但是我想以相反的方式实现同样的效果,比如我有一个"DOG"
,我想用它来找到"doggy"
。例如:
str_to_animal_enum("DOG") = Animal.DOG
我认为我可以重写Enum类的init函数,以检查我们作为参数输入的字符串名称是否在Enum名称中有代表,如果是,则匹配成功。
类似这样:
def __init__(cls, name):
for enum in all_enums:
if enum.name == name:
return enum
但这种解决方案的计算量非常大。假设我有100个名称要查找,并且对于每个名称,我们在枚举类中最坏情况下需要进行N次迭代,其中N是枚举数目。
我认为应该有更好的方法,但我不知道是什么。您有任何想法如何实现吗?谢谢 :)
valueOf(String name)
方法来支持它。此外,这并不是一个重复的问题。 - undefined