在python 2.7.6中使用新的Enum功能(通过backport enum34)。
给定以下定义,如何将int转换为相应的Enum值?
from enum import Enum class Fruit(Enum): Apple = 4 Orange = 5 Pear = 6
我知道我可以手工制作一系列的if语句来进行转换,但是有没有简单的pythonic转换方法?基本上,我想要一个返回枚举值的函数ConvertIntToFruit(int)。
我的用例是我有一个记录的csv文件,在其中我将每个记录读入一个对象。文件字段之一是代表枚举的整数字段。在填充对象时,我想将文件中的整数字段转换为对象中对应的Enum值。
您“叫”Enum课:
Enum
Fruit(5)
轮到5为Fruit.Orange:
5
Fruit.Orange
>>> from enum import Enum >>> class Fruit(Enum): ... Apple = 4 ... Orange = 5 ... Pear = 6 ... >>> Fruit(5) <Fruit.Orange: 5>
从文档的程序访问到枚举成员及其属性部分:
有时,以编程方式访问枚举中的成员很有用(例如,Color.red由于在编写程序时尚不知道确切的颜色而无法这样做)。Enum允许这样的访问: >>> Color(1) <Color.red: 1> >>> Color(3) <Color.blue: 3>
有时,以编程方式访问枚举中的成员很有用(例如,Color.red由于在编写程序时尚不知道确切的颜色而无法这样做)。Enum允许这样的访问:
Color.red
>>> Color(1) <Color.red: 1> >>> Color(3) <Color.blue: 3>
在相关注释中:要映射包含枚举成员 名称 的字符串值,请使用subscription:
>>> s = 'Apple' >>> Fruit[s] <Fruit.Apple: 4>