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

问题描述 投票:3回答:1

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

这是一个草图:

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__,但也在q​​azxswpoi等。

奖金详情:

  • 扁平化类结构和/或使用唯一名称可以做到这一点,但是(a)添加名称空间混乱,(b)Fruit中有些位使用__type__ / cls.Ref。次优。
  • 如果重要的话,这是一个遗留的2.7研究系统。实际上,如果3已经修复了这个,那将是我升级我们的论据的有用补充......
python class inner-classes
1个回答
2
投票

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

__qualname__

根据PEP原理(PEP 3155 - 类和功能的合格名称),您想要的在2.7中是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.