如何解决如何使用python中的输入访问枚举成员
我正在尝试通过输入访问 enum
变量的值。
这是我的代码:
class Animals(Enum):
Dog = 1
Cat = 2
Cow = 3
Choose = input('Choose an animal')
print(Animals.Choose.value)
这给了我一个错误,可能是因为 Animals
不包含 Choose
。
如何区分 enum
中的成员和我的输入变量?
这样,如果我输入 Dog
,它会给出 1
(Dog
变量的值)?
解决方法
枚举具有通过字符串和访问结果的各种方式的内置访问。有关详细信息,请参阅 Enum 的文档:
from enum import Enum
class Animal(Enum):
Dog = 1
Cat = 2
Cow = 3
choice = input('Choose an animal: ')
print(Animal[choice])
print(repr(Animal[choice]))
print(Animal[choice].value)
Choose an animal: Cat
Animal.Cat
<Animal.Cat: 2>
2
,
您可以尝试使用getattr
:
from enum import Enum
class Animals(Enum):
Dog = 1
Cat = 2
Cow = 3
Choose = input('Choose an animal')
print(getattr(Animals,Choose).value)
输出:
1
getattr
代表“get attribute”,这意味着它获取类中的变量,它的名字就是第二个参数。
Enum
已经内置了 __getitem__
方法,所以你可以直接用 []
括号索引它,像这样:
print(Animals[Choose].value)
输出:
1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。