How to convert int to Enum in python?
I think it is in simple words is to convert the int
value into Enum
by calling EnumType(int_value)
, after that access the name
of the Enum
object:
my_fruit_from_int = Fruit(5) #convert to int
fruit_name = my_fruit_from_int.name #get the name
print(fruit_name) #Orange will be printed here
Or as a function:
def convert_int_to_fruit(int_value):
try:
my_fruit_from_int = Fruit(int_value)
return my_fruit_from_int.name
except:
return None
You 'call' the Enum
class:
Fruit(5)
to turn 5
into Fruit.Orange
:
>>> from enum import Enum
>>> class Fruit(Enum):
... Apple = 4
... Orange = 5
... Pear = 6
...
>>> Fruit(5)
<Fruit.Orange: 5>
From the Programmatic access to enumeration members and their attributes section of the documentation:
Sometimes it’s useful to access members in enumerations programmatically (i.e. situations where
Color.red
won’t do because the exact color is not known at program-writing time).Enum
allows such access:>>> Color(1) <Color.red: 1> >>> Color(3) <Color.blue: 3>
In a related note: to map a string value containing the name of an enum member, use subscription:
>>> s = 'Apple'
>>> Fruit[s]
<Fruit.Apple: 4>