Как преобразовать 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 в объекте.
Ответы
Ответ 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