如果调用超类启动函数的以下用法之间有什么重要区别怎么办?
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)
答案 0 :(得分:8)
第一种形式(虽然你已经解决了拼写错误,并且在调用super时将其设为Child_1)将是你通常想要的。这将在继承层次结构中查找正确的方法。
对于第二种形式,您正在寻找实现此方法的父类的父类,并且您必须有一个非常特殊的用例(如果您想跳过父类,请不要从它们派生)为了想做到这一点。
在许多情况下,第三种情况与最初的情况相同,虽然没有看到父代码,但很难确定。第一种方法优于第三种方法的优点是你可以改变子类的基类,并且仍然会调用正确的方法。
此外,第一种形式允许合作多重继承。请参阅this post或this writeup,了解有用或必要的情况。