面向对象之继承

继承是一种创建新类的方式,新建的类可以继承一个或多个父类(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)相关推荐

  1. 从零开始的Python学习Episode 4——列表

    一.列表 列表与数组相似,定义一个列表 a=[1,2,3,4,5] 1.基本操作 1 a=[1,2,3,4] 2 3 #切片 范围取值时,包括第一项但不包括最后一项,顾头不顾尾 4 print(a[0 ...

  2. 从零开始学习python编程-从零开始的Python学习 -- 简单的练习题

    从零开始的Python学习 – 简单的练习题 目录: 从零开始的Python学习 -- 简单的练习题 前言: 顺序结构 A+B problem 苹果采购 分支结构 数的性质 闰年判断 Apple 循环 ...

  3. Python学习笔记19:列表 III

    Python学习笔记19:列表 III 其实这篇笔记标题应该是列表扩展,从列表开始,将涵盖Python中的序列容器. 关于列表的基础知识,可以看我的前两篇文章: Python学习笔记1:列表. Pyt ...

  4. 从零开始的Python学习 -- 简单的练习题

    从零开始的Python学习 – 简单的练习题 目录: 从零开始的Python学习 -- 简单的练习题 前言: 顺序结构 A+B problem 苹果采购 分支结构 数的性质 闰年判断 Apple 循环 ...

  5. python 简单实例训练(1~10)-从零开始的Python学习 -- 简单的练习题

    从零开始的Python学习 – 简单的练习题 目录: 从零开始的Python学习 -- 简单的练习题 前言: 顺序结构 A+B problem 苹果采购 分支结构 数的性质 闰年判断 Apple 循环 ...

  6. 从零开始:Python学习成长路线

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  7. Python学习笔记:面向对象编程(3)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  8. 2021小白Python学习记录Day7 面向对象基础(上) (定义类和对象、__init__传参、self、魔术方法)

    目录 一.定义类和对象 1.定义类 2.创建一个对象 2.1 创建一个实例对象并调用实例方法 2.2 创建另一个实例对象: 2.3 添加实例属性 二.__init__(self) 1. __init_ ...

  9. Python学习笔记:面向对象高级编程(完)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  10. Python学习笔记:面向对象高级编程(中下)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

最新文章

  1. 【Visual Studio】Visual Studio 2019 创建 Windows 控制台程序 ( 安装 ‘使用 C++ 的桌面开发‘ 组件 | 创建并运行 Windows 控制台程序 )
  2. mysql 同机做主从
  3. 提效工具git的基本使用
  4. html ppt文件在线播放,[2018年最新整理]如何在PPT中插入html网页.ppt
  5. python三引号 内部变量_python在三引号中使用变量
  6. [NOI2011]兔兔与蛋蛋游戏 二分图博弈
  7. 如何搭建一个打印荣誉证书的网站_如何搭建一个免费的作品集网站
  8. IOS基础之NSFounation框架的NSDictionary,NSMutableDictionary的使用
  9. intent android 匿名,Android 匿名启动activity 启动系统activity
  10. Abbey加入了FreeCodeCamp团队,担任编辑
  11. mysql索引(b+tree)小记
  12. Linux/UNIX不同shell环境下数组的处理
  13. 安卓逆向系列教程 4.6 去广告
  14. Pytorch数据的读取与存储
  15. 郭海萍在《蜗居》的台词
  16. linux 线程 pthread_t 和 线程 tid 的区别
  17. 喜报丨为工业安全赋能再添新动力 上海控安安全测评中心荣获CNAS认可
  18. 在Java中将excel文件转换成pdf文件
  19. Elasticsearch 6.4 ingest-attachment对文件IK分词器全文检索
  20. RHEL4.5 for x86的ORACLE SGA扩展

热门文章

  1. 渐进式Web应用(PWA)入门教程(下)
  2. Learn RxJava
  3. 京东电商广告和推荐的机器学习系统实践
  4. viewpager中fragment的生命周期管理
  5. cisco交换机命令大全(11)
  6. 解决Eclipse 64位启动时,报jvm.dll错
  7. 坑爹!Quartz 重复调度问题,你遇到过么?
  8. 这个被程序员捧上神坛的IDEA插件出来后,我扔掉了Postman了
  9. 2018年100个让程序员崩溃的瞬间!看到哪一个你哭了?
  10. 通知:小密圈暂停服务