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

时间:2019-03-18 20:22:03

标签: python class inner-classes

在我的场景中,我有多个嵌套的类都具有相同的名称,并且对其进行调试使我发疯。

这是草图:

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__等。

奖金详情:

    扁平化类结构和/或使用唯一名称可以做到这一点,但是(a)增加了名称空间的混乱,并且(b)Fruit中有一些位使用cls.Ref / self.Ref。次优。
  • 这很重要,它是旧版2.7研究系统。实际上,如果3解决了这个问题,那对我提升我们的地位将是有益的补充...

1 个答案:

答案 0 :(得分:2)

实际上,Python 3确实使用__qualname__进行了修复。是时候升级了。

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

根据PEP原理( PEP 3155-类和函数的合格名称),在2.7中无法实现所需的功能。