博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习第二十一节(继承顺序,super)
阅读量:5141 次
发布时间:2019-06-13

本文共 783 字,大约阅读时间需要 2 分钟。

复习:

抽象类

通过装饰器来定义这个函数。

抽象类本身也是个类,但是本身不能被实例化。

继承的实现原理

多重继承,当一个类是多个父类的子类,查找的顺序是:
__dict__ 》 然后按照继承的()左右顺序来寻找

如果子类的父类还有一个父类,那么他会先去寻找自己的树状类(D找不到自己的就去找A,A找不到就去找E,然后再去找b、c),而不是直接左右顺序寻找。

新式类中,上图这种,3条岔路的,是AD>B>C这个顺序。广度优先。

如上图,练习。

新式类里,菱形找是先找EB>FC>GDA 这个顺序。

这个mro可以看到调用路线,但是只有新式类才有,经典类没有。

经典类是先走到头,在走别的路线。
H>E>B>A>F>C>G>D这个顺序。深度优先

子类调用父类的方法

super()只有新式类里有super,按照新式类的继承顺序来继承。

super().foo() 调用父类的foo()函数,不用写参数,因为是绑定方法所以自动传参。
super的缺点是找到一个就会停止。
People.__init__这种可以写多个,可以找多个。指名道姓方法。

python2和pyhton3的区别。

封装

假装隐藏了数据属性,在属性前面加上__ 之后就对象就不能直接调用了,实际上是在__前面加上了_类名,可以用t.__dict__来查看

封装的变形,只在类定义阶段或者对象定义阶段(实例化)发生

之后更改的不会变形。

self.bar() 先从self自己找bar()函数。所以打印的先是print('from A.foo')

然后找的是class B的def bar()

变形之后 找到的是A的def foo 的self.__bar

因为在定义的时候__bar就变形了。

 

转载于:https://www.cnblogs.com/ArmoredTitan/p/7200522.html

你可能感兴趣的文章
九校联考-DL24凉心模拟Day2T1 锻造(forging)
查看>>
Cortex M3/M4 学习摘要(二)
查看>>
洛谷 P3237 [HNOI2014]米特运输
查看>>
Attributes.Add用途与用法
查看>>
JavaScript面向对象初探——封装和继承
查看>>
L2-001 紧急救援 (dijkstra+dfs回溯路径)
查看>>
【概率】poj 2096:Collecting Bugs
查看>>
javascript 无限分类
查看>>
【自制插件】MMD4Maya
查看>>
解决linux服务器乱码
查看>>
mapbox.gl文字标注算法基本介绍
查看>>
【C++】异常简述(二):C++的异常处理机制
查看>>
web.config在哪里
查看>>
SQL Server 2000 版本支持的最大物理内存量
查看>>
spring IOC装配Bean(注解方式)
查看>>
[面试算法题]有序列表删除节点-leetcode学习之旅(4)
查看>>
SpringBoot系列五:SpringBoot错误处理(数据验证、处理错误页、全局异常)
查看>>
kubernetes_book
查看>>
Redis 常用数据结构命令
查看>>
软件工程课堂作业
查看>>