如何在python中将int转换为Enum?

Use*_*ser 64 python int enums type-conversion python-2.7

使用python 2.7.6 的新Enum功能(通过backport enum34).

给定以下定义,如何将int转换为相应的Enum值?

from enum import Enum

class Fruit(Enum):
    Apple = 4
    Orange = 5
    Pear = 6
Run Code Online (Sandbox Code Playgroud)

我知道我可以手工制作一系列if语句来进行转换,但有一种简单的pythonic方式转换吗?基本上,我想要一个返回枚举值的函数ConvertIntToFruit(int).

我的用例是我有一个记录的csv文件,我将每条记录读入一个对象.其中一个文件字段是表示枚举的整数字段.当我填充对象时,我想将文件中的整数字段转换为对象中相应的Enum值.

Mar*_*ers 114

你叫' Enum班' :

Fruit(5)
Run Code Online (Sandbox Code Playgroud)

5Fruit.Orange:

>>> from enum import Enum
>>> class Fruit(Enum):
...     Apple = 4
...     Orange = 5
...     Pear = 6
... 
>>> Fruit(5)
<Fruit.Orange: 5>
Run Code Online (Sandbox Code Playgroud)

Programmatic访问枚举成员及其文档的属性部分:

有时,以编程方式访问枚举中的成员是有用的(即,Color.red由于在程序编写时不知道确切的颜色,因此不会这样做).Enum允许这样的访问:

>>> Color(1)
<Color.red: 1>
>>> Color(3)
<Color.blue: 3>
Run Code Online (Sandbox Code Playgroud)

在相关说明中:要映射包含枚举成员名称的字符串值,请使用subscription:

>>> s = 'Apple'
>>> Fruit[s]
<Fruit.Apple: 4>
Run Code Online (Sandbox Code Playgroud)

  • @jxramos确实遵循我的答案中的文档链接,它明确地涵盖在那里.使用项目访问:`Fruit ['Orange']`. (4认同)