Python:具有子类继承的内部类?

时间:2013-11-14 02:11:33

标签: python class inheritance subclass nested

是否可以像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()

1 个答案:

答案 0 :(得分:0)

你正在寻找的东西有点令人困惑,特别是你想要main和sub的实例是'嵌套'还是你真的想要嵌套类,这是一件非常不寻常的事情。您不能拥有一个嵌套的类,它将其封闭的

子类化

您可以使用简单的构图复制我认为您尝试做的事情:

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()

我调用了辅助类助手,因为它不是子类,它只是一个辅助类。这有点可疑。如果这两个类紧密耦合,它们之间总是存在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()

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