子类初始化父类的二种方法

类是面向对象编程中重要的概念,在大型项目中合理采用设计好的类,可以使系统逻辑更为清晰和健壮,在开发前期一般我们会设计一个或多个父类,设定好子类和父类的关系,其中很重要的就是父类初始化,所以今天我们来看看在子类中如何初始化父类和调用父类方法,只有了解了这些,你再看一些开源代码时才有头绪,否则双眼一抹黑,都不知道从哪里看起,所以对一些大型项目,理清他们类之间的关至关重要,其他不多说了,我们看具体实现方法:

第一种是在子类中显示的指定父类,调用父类的__init__()来初始化,我们看例子,现在我们有父类P,子类M,代码如下:

这段代码中在子类M的__init__构造函数中显示调用父类P的__init__()方法来进行初始化,同时也继承了父类的getname()和getage()方法,所以在实例化后运行结果是:

接下来我们用第二种方法,采用super()函数来对父类的初始化,还是上面的代码,我稍作修改,如下:

因为super函数只能用于新式类中,所以每个类都继承object类,在这段代码中我们用super(M,self).__init__(name,age),这句对父类进行了初始化,这段代码运行结果跟第一个例子是一样的,那有人可能就有疑问了,两种方法都可以,我应该采用哪种方法比较好,我的建议是采用super函数,因为这个函数比较先进,它是借鉴了其他语言的特性加到python中的,你不用给它指定父类的名称,它自己会寻找父类并进行继承,这个在多继承时非常有用,如果是单继承,你可以显示的调用父类的初始化方法,也可用super函数,没特殊性,这篇就到这里,有问题可以留言,同时欢迎转发,:)