【问题标题】:Get fully qualified name of a Python class (Python 3.3+)获取 Python 类的完全限定名称(Python 3.3+)
【发布时间】: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__ 属性。

标签: python inspect


【解决方案1】:

您正在寻找__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))

【讨论】:

  • 哦。我已经寻找过这个属性并尝试使用 IPython 找到它,但制表符完成根本没有显示它。不知道为什么。
猜你喜欢
  • 2011-01-02
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
  • 2014-06-04
相关资源
最近更新 更多