在python 2.7.6中使用新的枚举特性(通过backport enum34)。
给定下面的定义,我如何将一个int转换为对应的Enum值?
from enum import Enum
class Fruit(Enum):
Apple = 4
Orange = 5
Pear = 6
我知道我可以手工制作一系列if语句来完成转换,但是有没有一种简单的Python方法来转换呢?基本上,我想要一个返回枚举值的函数ConvertIntToFruit(int)。
我的用例是我有一个记录的csv文件,我将其中的每一条记录读入一个对象。其中一个文件字段是一个表示枚举的整数字段。当我填充对象时,我希望将文件中的整数字段转换为对象中相应的枚举值。
4条答案
按热度按时间nr9pn0ug1#
您可以“调用”
Enum
类:把
5
变成Fruit.Orange
:从文档的“以编程方式访问枚举成员及其属性"部分:
有时以编程方式访问枚举中的成员是有用的(例如,
Color.red
无法实现的情况,因为在编写程序时不知道确切的颜色)。Enum
允许这样的访问:在一份相关说明中:要Map包含枚举成员的 name 的字符串值,请使用subscription:
dzhpxtsq2#
我想简单来说就是通过调用
EnumType(int_value)
将int
值转换为Enum
,然后访问Enum
对象的name
:或作为函数:
kqlmhetl3#
以获得枚举;
获取枚举的字符串值;
bvuwiixz4#
我想要类似的东西,这样我就可以从一个引用访问值对的任何一部分。
该失败将引发预期的异常。
更强大的版本:
如果使用不当,这将避免创建异常,而是传递回错误指示。一种更Python化的方法是传递回“None”,但我的特定应用程序直接使用文本。