【发布时间】:2016-09-30 18:57:41
【问题描述】:
如何从模块根目录获取包含完整路径的类名称?对于 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。
【问题讨论】:
-
stackoverflow.com/questions/1401661/… 的可能重复请通过
__bases__属性和inspectmodule 提供的使用信息在此处查找方法解析顺序(mro)除了正式继承链之外也是有趣的信息“展示”。因为这个规则(如果提供多个方法)将被选择,就像一个有效的层次结构。 -
检查
__qualname__属性。