2、有多个父类时,按照MRO表的顺序依次查看
3、如果下一个待选的类出现了两个合法的选择,那么就从第一个父类中选取 。
4、补充一点:MRO对类的排序几乎适用于任何定义的类层次结构 。
来了来了,它真的来了:重点~~
有很多同学是否仔细看过上边的代码?
有关super()函数,以下重点需要各位明白:
在重写的方法中仅使用一次super()方法时 , 会按照MRO表从下一个类开始搜索对应的方法或属性,以此类推 。所以C中重写了父类的构造 , 构造中有super,所以会按照顺序去查找MRO中下一个类的方法,发现A中也有super,就会再去B中找对应的方法(同名方法是__init__),所以找到B的构造,可是B中又有super,就会再去MRO中B的下一个类(Base)中找对应的方法(Base的__init__()方法),所以会先打印“Base.__init__”,打印完后又因为B的__init__中还有打印“B.__init__”,所以接着打印‘B.__init__’,又因为打印完后A中还有打印“A.__init__”,所以再打印“A.__init__”,最后打印“C.__init__” 。这样就可以遍历MRO整张表中所有的对应的__init__()方法,并且让每个方法只会被调用一次 。
为了更好的记忆:当所有重写的方法中只使用了一次super函数时,会从最上层的类依次调用其指定的方法即可以理解为(object-Base-B-A-C) 。
所以,输出结果为:
甚至于如下情况更为耐人寻味,仔细品一品:
值的一提的是:AB均没有显式的继承的父类 , 为何结果为打印‘AB’呢?这里就要理解MRO的含义了哦!
关于python父类函数和python 调用父类函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。
推荐阅读
- 如何促进新媒体变现,如何促进新媒体变现发展
- vm苹果虚拟机花屏,vmware虚拟机花屏
- ip代理软件谁最便宜,ip代理软件谁最便宜好用
- 760主板支持什么cpu,760主板支持什么显卡
- 基于python的爬虫就业分析代码,基于python的爬虫毕业设计
- 保存JAVA源代码,java导出源代码
- java现实今年年份代码 java年龄
- 微站小程序开发简介,微站和小程序的区别
- 湖南新开药店如何设计营销,开药店的营销策略