2

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

1 回答 1

1

您正在寻找的东西有点令人困惑,特别是您是否希望 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()

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

于 2013-11-14T05:30:03.907 回答