Подтвердить что ты не робот

Как преобразовать int в Enum в python?

Использование новой функции Enum (через backport enum34) с помощью python 2.7.6.

Учитывая следующее определение, как я могу преобразовать int в соответствующее значение Enum?

from enum import Enum

class Fruit(Enum):
    Apple = 4
    Orange = 5
    Pear = 6

Я знаю, что могу обработать серию if-утверждений для преобразования, но есть ли простой пифонический способ конвертировать? В принципе, мне нужна функция ConvertIntToFruit (int), которая возвращает значение перечисления.

Мой вариант использования: у меня есть файл csv записей, где я читаю каждую запись в объекте. Одним из полей файла является целочисленное поле, которое представляет собой перечисление. Когда я заполняю объект, я хотел бы преобразовать это целочисленное поле из файла в соответствующее значение Enum в объекте.

4b9b3361

Ответ 1

'Вызвать' класс Enum:

Fruit(5)

чтобы превратить 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>

Ответ 2

Вы также можете использовать словарь python для этой цели. Как следует,

Fruit = {4:'Apple',5:'Orange',6:'Pear'}
Fruit[4]
Fruit[6]

выход:

Apple
Pear

Или вы можете создать простой Enum следующим образом:

Apple,Orange,Pear = range(4,6)
print Apple,Pear,Orange