Python:子类继承中的内部类?

3

内部类是否可以像subclass(object)一样继承?例如,如何使用下面的代码实现?

class main:
    class sub(main):
        def __init__(self):
            print(main.foo)
    def __init__(self):
        self.foo = "bar"
        baz = self.sub()

if __name__ == '__main__':
    bar = main()

为什么你需要它们是"内部类"呢?它将继承自身,这似乎有些奇怪... - undefined
那怎么可能呢?按照这个定义,sub也会有一个叫做sub的内部类,以此类推。 - undefined
@rogaos 他们可能是内部类,表示它们被设计为该类的“私有”成员。 - undefined
1
我认为这是不可能的,因为当你定义'sub'时,类'A'还没有被创建。 - undefined
让我重新表达一下,我希望嵌套/内部/随便你怎么称呼它们的类能够直接编辑它们的父类/嵌套/WYWTCT的属性,就像你可以在我提供的示例中所做的那样。 - undefined
1个回答

1
有点困惑你要找什么,具体来说,您是想让主类和子类“嵌套”,还是实际上想要嵌套类,这是非常不寻常的事情。您不能将一个嵌套类作为其封闭类的子类。
我认为您试图通过简单组合来复制所需功能:
class Main(object):
    def __init__(self):
        self.foo = 'bar'
        baz = Helper(self)

class Helper(object):
    def __init__(self, parent):
        self.parent = parent  
        print(parent.foo) # Access to members of Main through parent reference

if __name__ == "__main__":
    x = Main()

我之所以叫辅助类 helper,是因为它不是一个子类,而只是一个辅助类。这有点可疑。如果这两个类是如此紧密耦合,它们之间总是存在1:1的关系,并且它们都需要持有对方的引用,那么它们为什么要分成不同的类并不清楚。你也可以通过常规继承来实现类似的功能,我认为这可能更符合你的需求。

class Main(object):
    def __init__(self):
        self.foo = 'bar'
class Sub(main):
    def __init__(self):
        super(Sub, self).__init__()
        print(self.foo)  # All attributes defined by main exist in sub
if __name__ == "__main__":
    Sub()

请注意,我们构建了一个子对象,其中包含主类的所有行为以及自己的行为。无论如何,我希望这可以帮助你。如果您可以更新您的问题以解释您想要的行为与这些不同,我们可以从那里开始。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接