Если у меня есть функционально созданный 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
, поэтому, похоже, он не связан с типом, как многие из подобных вопросов о получении имени типа вВообще на питоне советую.