enumeracion - Cómo convertir int a Enum en python?
enumeracion python (2)
''Llamar'' a la clase Enum
:
Fruit(5)
para convertir 5
en Fruit.Orange
:
>>> from enum import Enum
>>> class Fruit(Enum):
... Apple = 4
... Orange = 5
... Pear = 6
...
>>> Fruit(5)
<Fruit.Orange: 5>
Desde el acceso programático a los miembros de la enumeración y su sección de atributos de la documentación:
A veces es útil acceder a miembros en enumeraciones programáticamente (es decir, situaciones en las que
Color.red
no funcionará porque el color exacto no se conoce en el momento de la escritura del programa).Enum
permite dicho acceso:
>>> Color(1) <Color.red: 1> >>> Color(3) <Color.blue: 3>
Usando la nueva función Enum (a través de backport enum34 ) con python 2.7.6.
Dada la siguiente definición, ¿cómo puedo convertir un int al valor Enum correspondiente?
from enum import Enum
class Fruit(Enum):
Apple = 4
Orange = 5
Pear = 6
Sé que puedo crear a mano una serie de sentencias if para hacer la conversión, pero ¿hay una manera fácil de convertir python? Básicamente, me gustaría una función ConvertIntToFruit (int) que devuelva un valor enum.
Mi caso de uso es Tengo un archivo de registros csv en el que estoy leyendo cada registro en un objeto. Uno de los campos del archivo es un campo entero que representa una enumeración. A medida que voy rellenando el objeto me gustaría convertir ese campo entero del archivo en el valor Enum correspondiente en el objeto.
También puede usar el diccionario de Python para este propósito. Como sigue,
Fruit = {4:''Apple'',5:''Orange'',6:''Pear''}
Fruit[4]
Fruit[6]
salida:
Apple
Pear
O puede crear un Enum simple de la siguiente manera,
Apple,Orange,Pear = range(4,6)
print Apple,Pear,Orange