¿Cómo obtener todos los valores de la clase de enumeración de Python?
Estoy usando la biblioteca Enum4 para crear una clase de enumeración de la siguiente manera:
class Color(Enum):
RED = 1
BLUE = 2
Quiero imprimir [1, 2]
como una lista en alguna parte. ¿Cómo puedo conseguir esto?
Puedes hacer lo siguiente:
[e.value for e in Color]
Basado en la respuesta de @Jeff, refactorizada para usar a classmethod
para que puedas reutilizar el mismo código para cualquiera de tus enumeraciones:
from enum import Enum
class ExtendedEnum(Enum):
@classmethod
def list(cls):
return list(map(lambda c: c.value, cls))
class OperationType(ExtendedEnum):
CREATE = 'CREATE'
STATUS = 'STATUS'
EXPAND = 'EXPAND'
DELETE = 'DELETE'
print(OperationType.list())
Produce:
['CREATE', 'STATUS', 'EXPAND', 'DELETE']
Úselo _member_names_
para obtener un resultado fácil y rápido si son solo los nombres, es decir
Color._member_names_
Además, tienes _member_map_
que devuelve un diccionario ordenado de los elementos. Esta función devuelve un collections.OrderedDict
, por lo que tienes Color._member_map_.items()
y Color._member_map_.values()
para jugar. P.ej
return list(map(lambda x: x.value, Color._member_map_.values()))
devolverá todos los valores válidos de Color
Puedes usar IntEnum :
from enum import IntEnum
class Color(IntEnum):
RED = 1
BLUE = 2
print(int(Color.RED)) # prints 1
Para obtener la lista de entradas:
enum_list = list(map(int, Color))
print(enum_list) # prints [1, 2]