参考文章:
https://blog.csdn.net/weixin_40734030/article/details/122861895
( 在这个文章中可以看看菱形继承的问题,为什么更建议用super().__init__()而不用class_Father.__init__() )
几个需要注意的点:
1. 凡是子类在属性上和父类是有所区别的(子类部分属性和父类不同/子类的属性和父类完全不一样,总之就是和父类属性有区别),那么子类就需要有自己的__init__()方法,来说明自己的属性。(子类和父类属性完全不同也是可以的,有时候子类就想继承父类的方法呢,那么可以形成一种继承关系)
2. 子类中给如果有自己的__init__()方法,那么子类中的属性到底为什么,就按照__init__()中的内容来。
3:如果子类中没有定义__init__方法,但因为存在着继承关系,那么默认子类继承父类所有的__init__中的内容,那么可以认为子类的属性并不需要和父类有所区别。
4. 其实对于method也是如此,子类完全继承父类的method,但是如果子类中重新对某个父类中存在的method进行新的定义,那么就按照子类中的method的功能来执行,否则就是父类中的method。同理,子类中还可以定义自己的method。
需要根据子类和父类的实际含义:先确定子类和父类中的属性/方法,哪些需要继承,哪些又有所不同,来确定子类__init__()的内容,以及在继承关系中和父类在方法上的区别。