Как получить все значения из класса enum python?

Я использую библиотеку Enum4 для создания класса enum следующим образом:

class Color(Enum): RED = 1 BLUE = 2 

Я хочу напечатать [1, 2] как список где-нибудь. Как я могу это достичь?

4 Solutions collect form web for “Как получить все значения из класса enum python?”

Вы можете использовать IntEnum :

 from enum import IntEnum class Color(IntEnum): RED = 1 BLUE = 2 print(int(Color.RED)) # prints 1 

Чтобы получить список ints:

 enum_list = list(map(int, Color)) print(enum_list) # prints [1, 2] 

Вы можете сделать следующее:

 [e.value for e in Color] 

Итак, у Enum есть __members__ dict. Решение, предлагаемое @ozgur, действительно является лучшим, но вы можете сделать это, что делает то же самое, с большей работой

[color.value for color_name, color in Color.__members__.items()]

Словарь __members__ может пригодиться, если вы хотите динамически вставлять материал в него … в какой-то сумасшедшей ситуации.

[EDIT] По-видимому, __members__ не словарь, а прокси-сервер. Это означает, что вы не можете легко добавлять к нему элементы.

Тем не менее, вы можете делать такие странные вещи, как MyEnum.__dict__['_member_map_']['new_key'] = 'new_value' , а затем вы можете использовать новый ключ, например MyEnum.new_key …. но это всего лишь деталь реализации, и не следует воспроизводить. Черная магия оплачивается с огромными расходами на техническое обслуживание.

Чтобы использовать Enum с любым типом значения, попробуйте следующее:
Обновлено с некоторыми улучшениями … Спасибо @Jeff, к вашим советам!

 from enum import Enum class Color(Enum): RED = 1 GREEN = 'GREEN' BLUE = ('blue', '#0000ff') @staticmethod def list(): return list(map(lambda c: c.value, Color)) print(Color.list()) 

В результате:

 [1, 'GREEN', ('blue', '#0000ff')] 
  • wrapping struct с вложенным перечислением - ссылка в векторном шаблоне
  • Те же элементы перечисления обертывают константы разных типов в SWIG> 2.0.1
  • Переименование Python - получение значения перечисления при преобразовании строк
  • Доступ к Python enum34 по имени
  • Указание mySQL ENUM в модели Django
  • Когда я должен подклассировать EnumMeta вместо Enum?
  • Как преобразовать int в Enum в python?
  • Питонический дизайн без перечислений
  • Python - лучший язык программирования в мире.