0

如果以下调用超类启动函数的用途之间有什么重要区别呢?

class Child_1(Parent):
    def __init__(self):
        super(Child, self).__init__()

class Child_2(Parent):
    def __init__(self):
        super(Parent, self).__init__()

class Child_3(Parent):
    def __init__(self):
        Parent.__init__(self)
4

1 回答 1

8

第一种形式(尽管您会修正错字并在调用 super 时将其设为 Child_1)将是您通常想要的形式。这将在继承层次结构中查找正确的方法。

对于第二种形式,您正在寻找实现此方法的 Parent 的父类,并且您必须有一个非常特殊的用例(如果您想跳过父类,不要从它们派生)以便想要这样做。

在许多情况下,第三个最终会与第一个做同样的事情,尽管没有看到 Parent 的代码,很难确定。第一种方法优于第三种方法的优点是您可以更改子类的基类,并且仍然会调用正确的方法。

此外,第一种形式允许协作多重继承。请参阅这篇文章这篇文章以了解这将是有用或必要的情况。

于 2013-06-15T03:11:47.587 回答