获取 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))
如何获取 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))