获取 Python class 的完全限定名称(Python 3.3+)

Get fully qualified name of a Python class (Python 3.3+)

如何获取 class 的名称,包括其模块根目录的完整路径?对于 Python 3.3 及更高版本?

这里是 Python 代码的例子:

class A:
    class B:
        class C:
            def me(self):
                print(self.__module__)
                print(type(self).__name__)
                print(repr(self))

x = A.B.C()
x.me()

此代码在 Python 3.3:

上输出我
__main__
C
<__main__.A.B.C object at 0x0000000002A47278>

所以,Python 内部知道我的对象是 __main__.A.B.C,但我如何以编程方式获取它?我可以解析 repr(self),但对我来说这听起来像是一个 hack。

您正在寻找__qualname__(在Python 3.3中引入):

class A:
    class B:
        class C:
            def me(self):
                print(self.__module__)
                print(type(self).__name__)
                print(type(self).__qualname__)
                print(repr(self))