首页 > 解决方案 > 如何在 Python 中设置嵌套类的显示名称?

问题描述

我有一个场景,我有多个同名的嵌套类,调试它让我发疯。

这是一个草图:

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

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

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

奖金详情:

标签: pythonclassinner-classes

解决方案


实际上 Python 3 确实用__qualname__. 是时候升级了。

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

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


推荐阅读