所有的函数名都可以理解为变量。python中就不存在类似C++的重载,因为python不允许出现相同的函数名。类的继承中,如果我们重写(overriding)一个函数,那不是重载,这个函数会覆盖父类中的同名函数。
继承不是复制,子类如果有,就用子类的,子类如果没有,就按照MRO返回的顺序去父类中寻找。
C3算法:保证每个类只调用一次
1. 什么是多继承
多继承就是一个类有多个父类。
classMother:pass
classFather:pass
classChild(Mother, Father):passissubclass(Child, Mother)and issubclass(Child, Father)
2. MRO(Method Resolution Order)
MRO给出了子类中属性的调用顺序,如果要查看顺序可以使用__mro__属性,或者mro()方法。
__mro__属性返回一个元组,mro()方法返回一个列表,内容是一样的。
3. 多继承中的纠纷
如果继承的多个父类中有一个共同的属性,这个子类会继承谁的值呢?
我们来看下面这个例子:
从中可以看出,该子类继承了第一个父类的属性。
4. super()函数
多继承当中也经常用到super函数。下面这个例子中,