Получение имени функционально созданного класса enum.Enum - PullRequest
1 голос
/ 07 ноября 2019

Если у меня есть функционально созданный enum.Enum в python (в данном случае 3.7), как мне извлечь из него имя класса?

import enum

def print_the_enum_class_name(some_enum_class):
    print(...) # ?

my_enum_class = enum.Enum('FunctionallyCreatedEnum', 'RED GREEN BLUE')

print_the_enum_class_name(my_enum_class) # Should print FunctionallyCreatedEnum

Кажется, это должно быть просто,но я не могу найти подходящего члена в документах, и охота в .__dict__ и выполнение dir(my_enum_class) также, похоже, не имеют ответа.

На каждом из них есть _name_ разбойниковсинглтоны (называемые в документах членами перечисления) внутри Enum (например, print(my_enum_class.RED._name_) # prints RED, но в самом классе нет _name_. Также есть простой .name, такой же.

ItДолжно быть где-то храниться, так как

print(repr(my_enum_class)) # prints <enum 'FunctionallyCreatedEnum'>

К сожалению

print(type(my_enum_class)) # prints enum.EnumMeta
print(my_enum_class.__class__.__name__) # also prints enum.EnumMeta

, поэтому, похоже, он не связан с типом, как многие из подобных вопросов о получении имени типа вВообще на питоне советую.

1 Ответ

1 голос
/ 07 ноября 2019
def print_the_enum_class_name(some_enum_class):
    print(some_enum_class.__name__)

:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...