Python中嵌套的类如何设置显示名称?

How do you set the display name of nested classes in Python?

我有一个场景,我有多个嵌套的 class 都是同名的,调试它让我抓狂。

这是一个草图:

class Reference(object):
    # common functionality here

class Fruit(object):
    # common functionality here

class Apple(Fruit):
    class Ref(Reference):
        # specific functionality here

class Orange(Fruit):
    class Ref(Reference):
        # specific functionality here

# like 6 more fruits

我的问题:任何列出引用对象的 class 名称的操作都将其显示为 mymodule.Ref 而不是 mymodule.Apple.Ref,这会更有帮助。

有没有办法告诉 Python 为我的嵌套 classes 的实例使用更好的名称?默认为 __str__,但也有 __type__,等等

奖金详情:

实际上 Python 3 确实用 __qualname__ 解决了这个问题。是时候升级了。

https://www.python.org/dev/peps/pep-3155/#example-with-nested-classes

根据 PEP 基本原理(PEP 3155 -- 类 和函数 的限定名称),您想要的在 2.7 中是不可能的。