获取嵌套类的全名

Posted

技术标签:

【中文标题】获取嵌套类的全名【英文标题】:Get the full name of a nested class 【发布时间】:2017-02-07 12:28:33 【问题描述】:

给定一个嵌套类B

class A:
    class B:
        def __init__(self):
            pass

ab = A.B()

如何获得ab 的全名?我希望得到像A.B 这样的结果。

【问题讨论】:

为什么要嵌套类?你要这个名字干什么?您要解决的实际问题是什么? 我最强烈的理由之一是展示模块的良好实践。例如,我有一个类是所有模块的信封。我使用它是因为 python 对模块没有完美的解决方案。第二个原因是更好地分解问题。 这不是一个很好的理由; Python 确实 有一个模块解决方案,它是错误的模块。包含__init__.py 的文件或目录就是模块。您不必将所有内容都包装在类中,这不是 Java。也许你应该问那个问题。 ***.com/questions/2020014/… 好的做法是:不要嵌套类。几乎总是有另一种更好的方法来做你正在做的任何事情。 【参考方案1】:

您可以获得其__class__ 的完全限定名称__qualname__

>>> ab.__class__.__qualname__
'A.B'

最好使用type(在实例上调用__class__):

>>> type(ab).__qualname__

【讨论】:

以上是关于获取嵌套类的全名的主要内容,如果未能解决你的问题,请参考以下文章

在类中如何实现类的嵌套

UIScrollView及其子类的嵌套联动

如何创建嵌套类列表,其中每个嵌套类的某个属性为真?

java内部类的静态嵌套类

JAVA学习脚印9:外部类与嵌套类

JAVA学习脚印9:外部类与嵌套类