Maison > Questions et réponses > le corps du texte
天蓬老师2017-04-17 13:18:46
因为子类无法推断出该如何调用父类的构造函数,例如
class A():
def __init__(a, b):
pass
class B(A):
def __init__(c):
pass
观察一下C++的构造函数的处理情况,注意看第五条
- 如果子类没有定义构造方法,则调用父类的无参数的构造方法。
- 如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法。
- 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数,则会调用父类的默认无参构造函数。
- 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数且父类自己提供了无参构造函数,则会调用父类自己的无参构造函数。
- 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数且父类只定义了自己的有参构造函数,则会出错(如果父类只有有参数的构造方法,则子类必须显示调用此带参构造方法)。
子类的构造函数,可能父类的参数个数、顺序都与不一致,所以也无法推测出应该如何调用父类的构造函数。
对于Python这种只能定义一个“构造函数”的语言来说,也不能保证像C++一样 肯定有一个无参数构造函数,所以...只能手动调用了