单继承
定义父类Person
1 | class Person(): |
使用super()调用父类的方法
1 | class YellowPeople(Person): |
直接使用父类的名称进行调用
与super()方式调用的区别是多传入了个self参数
可以看出使用super()方式调用更简洁
1 | class YellowPeople(Person): |
可以看到init()的调用顺序:先子类,后父类
YellowPeople.init() 被调用
Person.init() 被调用
xiaoming 今年 18 岁, 体重 110 斤
多继承
同时继承多个父类
拥有所有父类的属性方法
1 | class Person(): |
(<class ‘main.son’>, <class ‘main.YellowPeopleFather’>, <class ‘main.WhitePeopleMother’>, <class ‘main.Person’>, <class ‘object’>)
Person.init() 被调用
黄种人的 play 方法
白种人的 say 方法
所有父子类都有相同的eat()方法,如何调用指定的类
son类本身就有eat方法,直接调用
1 | class son(YellowPeopleFather, WhitePeopleMother): |
xiaozhang 调用的是 son 方法,正在吃food
调用YellowPeopleFather 类中的 eat 方法
1 | class son(YellowPeopleFather, WhitePeopleMother): |
xiaozhang 调用的是 YellowPeopleFather 方法, 正在吃food
调用WhitePeopleMother 类中的 eat 方法
1 | class son(YellowPeopleFather, WhitePeopleMother): |
xiaozhang 调用的是 WhitePeopleMother 方法, 正在吃food
调用Person 类(基类)中的 eat 方法
1 | class son(YellowPeopleFather, WhitePeopleMother): |
xiaozhang 调用的是 Person 方法,正在吃food
总结:super调用的本质是调用MRO顺序的下一个类,