从零开始的Python学习Episode 19——面向对象(2)
面向对象之继承
继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称
为基类或超类,新建的类称为派生类或子类。
子类会“”遗传”父类的属性,从而解决代码重用问题。
单继承与多继承
class Par1:pass class Par2:pass class ch1(Par1):#单继承pass class ch2(Par1,Par2):#多继承pass
派生中方法调用的规则
子类也可以添加自己新的属性或者在自己这里重新定义这些属性(不会影响到父类),需要注意的是,一旦重新定义了自己的属性且与父类重名,那么调用新增的属性时,就以自己为准了。
但在多继承中情况就会稍微有点复杂,因为如果两个父类中有相同名字的方法的话,子类会调用哪一个?
试验:
class Par1():def f1(self):print('this is par1.f1') class Par2():def f1(self):print('this is par2.f1') class ch2(Par1,Par2):passobj = ch2() obj.f1() #输出:this is par1.f1
class Par1():def f2(self):print('this is par1.f1') class Par2():def f1(self):print('this is par2.f1') class ch2(Par1,Par2):passobj = ch2() obj.f1() #输出:this is par2.f1
看来是优先在第一个父类中找,找不到再找下一个。
class Grandpar:def f1(self):print('this is grandpar.f1') class Par1(Grandpar):def f2(self):print('this is par1.f1') class Par2(Grandpar):def f1(self):print('this is par2.f1') class ch2(Par1,Par2):passobj = ch2() obj.f1() #输出:this is par2.f1
class Grandpar:def f1(self):print('this is grandpar.f1') class Par1(Grandpar):def f2(self):print('this is par1.f1') class Par2(Grandpar):def f2(self):print('this is par2.f1') class ch2(Par1,Par2):passobj = ch2() obj.f1() #输出:this is grandpar.f1
当父类还有父类的时候,会先在Par1,Par2中找,找不到再从他们的父类中找。
如果在子类中需要使用父类中已经被重写的方法,则可以通过
类名.方法名()
的方法调用。
转载于:https://www.cnblogs.com/smilepup-hhr/p/10341886.html
从零开始的Python学习Episode 19——面向对象(2)相关推荐
- 从零开始的Python学习Episode 4——列表
一.列表 列表与数组相似,定义一个列表 a=[1,2,3,4,5] 1.基本操作 1 a=[1,2,3,4] 2 3 #切片 范围取值时,包括第一项但不包括最后一项,顾头不顾尾 4 print(a[0 ...
- 从零开始学习python编程-从零开始的Python学习 -- 简单的练习题
从零开始的Python学习 – 简单的练习题 目录: 从零开始的Python学习 -- 简单的练习题 前言: 顺序结构 A+B problem 苹果采购 分支结构 数的性质 闰年判断 Apple 循环 ...
- Python学习笔记19:列表 III
Python学习笔记19:列表 III 其实这篇笔记标题应该是列表扩展,从列表开始,将涵盖Python中的序列容器. 关于列表的基础知识,可以看我的前两篇文章: Python学习笔记1:列表. Pyt ...
- 从零开始的Python学习 -- 简单的练习题
从零开始的Python学习 – 简单的练习题 目录: 从零开始的Python学习 -- 简单的练习题 前言: 顺序结构 A+B problem 苹果采购 分支结构 数的性质 闰年判断 Apple 循环 ...
- python 简单实例训练(1~10)-从零开始的Python学习 -- 简单的练习题
从零开始的Python学习 – 简单的练习题 目录: 从零开始的Python学习 -- 简单的练习题 前言: 顺序结构 A+B problem 苹果采购 分支结构 数的性质 闰年判断 Apple 循环 ...
- 从零开始:Python学习成长路线
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...
- Python学习笔记:面向对象编程(3)
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- 2021小白Python学习记录Day7 面向对象基础(上) (定义类和对象、__init__传参、self、魔术方法)
目录 一.定义类和对象 1.定义类 2.创建一个对象 2.1 创建一个实例对象并调用实例方法 2.2 创建另一个实例对象: 2.3 添加实例属性 二.__init__(self) 1. __init_ ...
- Python学习笔记:面向对象高级编程(完)
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:面向对象高级编程(中下)
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
最新文章
- 【Visual Studio】Visual Studio 2019 创建 Windows 控制台程序 ( 安装 ‘使用 C++ 的桌面开发‘ 组件 | 创建并运行 Windows 控制台程序 )
- mysql 同机做主从
- 提效工具git的基本使用
- html ppt文件在线播放,[2018年最新整理]如何在PPT中插入html网页.ppt
- python三引号 内部变量_python在三引号中使用变量
- [NOI2011]兔兔与蛋蛋游戏 二分图博弈
- 如何搭建一个打印荣誉证书的网站_如何搭建一个免费的作品集网站
- IOS基础之NSFounation框架的NSDictionary,NSMutableDictionary的使用
- intent android 匿名,Android 匿名启动activity 启动系统activity
- Abbey加入了FreeCodeCamp团队,担任编辑
- mysql索引(b+tree)小记
- Linux/UNIX不同shell环境下数组的处理
- 安卓逆向系列教程 4.6 去广告
- Pytorch数据的读取与存储
- 郭海萍在《蜗居》的台词
- linux 线程 pthread_t 和 线程 tid 的区别
- 喜报丨为工业安全赋能再添新动力 上海控安安全测评中心荣获CNAS认可
- 在Java中将excel文件转换成pdf文件
- Elasticsearch 6.4 ingest-attachment对文件IK分词器全文检索
- RHEL4.5 for x86的ORACLE SGA扩展