python类与对象part3
来源:互联网 发布:手游源码一般多少钱 编辑:程序博客网 时间:2024/06/14 08:51
1. 调用父类中的方法
我们想要调用一个在子类中已经被覆盖的父类的方法要怎么做呢?答案是通过super()函数来完成
比如以下:
class Animal(): def __init__(self,kind): self.kind = kind def prin(self): print('animal print')class Bird(Animal): def __init__(self,kind): super().__init__(kind) def prin(self): print('bird print') super(Bird, self).prin()bird=Bird('bird')bird.prin()
上例的运行结果:
bird printanimal print
有结果可知我们在子类中调用了已经被子类覆盖的父类的方法
super()在没有显式列出基类的时候也可以正常工作
super()函数的一种常见的用途就是调用父类的__init()__方法,确保父类被正确的初始化了
关于super()方法的正确使用,首先我们需要了解一下python是如何实现继承的。针对每一个定义的类,python都会计算出一个称为方法解析顺序(MRO)的列表,MRO列表只是简单的对所有的基类进行线性排序。要实现继承,python会从MRO标的最左边的类开始,从左到右依次查找,直到找到待查的属性为止。
对于MRO列表本身是怎么确定呢?这里用到了一种称为C3线性化处理的技术。简单来说就是一种针对父类的归并排序,他需要满足三个条件:
- 先检查子类再去检查父类;
- 有多个父类的时候,按照MRO列表的顺序依次检查;
- 如果下一个待选的类中出现了两个合法的选择,那么就从第一个父类 选取
阅读全文
1 0
- python类与对象part3
- Python类与对象
- Python类与对象
- python 对象与类
- Python类与对象
- python的类与对象
- 关于Python类与对象
- python中的类与对象
- python类与对象part1
- python类与对象part2
- Python练习题:类与对象
- 数据结构与算法(Python)——常见数据结构Part3(Common data structures)
- part3
- PART3
- 《计算机组成与设计》part3
- 危险代码:内存中的Java类和对象为何变得不安全—Part3
- Spring AOP 代理对象的生成 part3
- Remind-You Part3. Python-Sqlite记录数据
- Java获取存储过程返回的多个结果集
- struts2中使用servlet
- bzoj1579 [Usaco2009 Feb]Revamping Trails 道路升级(分层图最短路)
- Spark1.6.3学习02——Spark Programming Guide
- BZOJ 3262: 陌上花开 CDQ
- python类与对象part3
- Linux 实用记录
- EXISTS和IN的区别
- Linux之百度云服务器搭建
- ROWNUM的用法
- N*N矩阵
- 利用索引优化的步骤
- 蓝牙学知识三【connEventCounter】【Attribute Data List】
- 解决导入过程中出现的ORA-02289错误