1

如果我在 python 中有一个功能创建的 enum.Enum (在本例中为 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相同的平原。

但它必须存储在某个地方,因为

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

所以它似乎与类型无关,因为许多关于在 python 中获取类型名称的类似问题都暗示了这一点。

4

1 回答 1

1
def print_the_enum_class_name(some_enum_class):
    print(some_enum_class.__name__)

:)

于 2019-11-07T20:45:16.567 回答