继承的详解

https://www.cnblogs.com/poloyy/p/15216652.html

这篇文章讲的都是单继承,Python 中还有多继承

Python 多继承的背景

  • 大部分面向对象的编程语言,都只支持单继承,即子类有且只能有一个父类
  • 而 Python 却支持多继承(C++也支持多继承)
  • 和单继承相比,多继承容易让代码逻辑复杂、思路换了一直备受争议,中小型项目中较少使用,后来的 Java、C#、PHP 取消了多继承
  • 多继承带来的问题:多个父类中包含同名的类方法
  • Python 的解决方案:根据子类继承多个父类时这些父类的前后次序决定,即排在前面父类中的类方法会覆盖排在后面父类中的同名类方法【后面文章详解】

什么是多继承

  • 子类可以拥有多个父亲,并且具有所有父类的属性和方法
  • 儿子可以拥有多个爸爸....爸爸也可以有多个儿子.....

语法格式

class 子类(父类1, 父类2, ...):pass

类图参考

实际代码

class A:def test(self):print("test")class B:def demo(self):print("demo")class C(A, B):...c = C()
c.test()
c.demo()# 输出结果
test
demo

C 继承了 A、B,拥有了他们的所有属性和方法

多继承带来的顺序问题

问题的提出

如果不同的父类中存在同名的方法,子类对象在调用该方法时,会调用哪一个父类的方法呢?

重点注意

  • 正式开发中,如果需要用到多继承,那么多个父类应该避免使用同名的属性、方法
  • 如果父类存在同名的属性、方法,应该尽量避免使用多继承

类图

实际代码

class A:def test(self):print("AAA-test")def demo(self):print("AAA-demo")class B:def test(self):print("BBB-test")def demo(self):print("BBB-demo")class C(A, B):...c = C()
c.test()
c.demo()# 输出结果
AAA-test
AAA-demo

调用的是父类 A 的方法

如果 C 继承父类的顺序改变一下呢

# 刚刚是 A, B ; 现在是 B, A
class C(B, A):...c = C()
c.test()
c.demo()# 输出结果
BBB-test
BBB-demo

  • 现在变成调用父类 B 的方法了
  • 这又是为什么呢?答案就是 Python 的 MRO 方法搜索顺序

Python 的 MRO 方法搜索顺序

https://www.cnblogs.com/poloyy/p/15226424.html

多继承结合 super() 的使用呢?

https://www.cnblogs.com/poloyy/p/15223443.html

新式类和旧式类

https://www.cnblogs.com/poloyy/p/15226425.html

Python - 面向对象编程 - 多继承相关推荐

  1. Python面向对象编程:类继承和其衍生术语

    Python面向对象编程03:类继承和其衍生术语 前面我们讲到过正则表达式字符等,上一篇分享了面向对象编程和类的结构,最后稍微提到了继承. Python面向对象编程:深度认识类class_ Pytho ...

  2. Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合

    Python零基础速成班-第9讲-Python面向对象编程(上),对象和类.初始化.继承.重写.多态.类方法.组合 学习目标 修饰器 面向对象编程:对象和类.初始化.继承.重写.多态.类方法.组合 课 ...

  3. 《Python面向对象编程指南》——1.2 基类中的__init__()方法

    本节书摘来自异步社区<Python面向对象编程指南>一书中的第1章,第1.2节,作者[美]Steven F. Lott, 张心韬 兰亮 译,更多章节内容可以访问云栖社区"异步社区 ...

  4. 关于python面向对象编程中、下列说法中_关于Python面向对象编程的知识点总结

    前言 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程. 接下来我们 ...

  5. python对象编程例子-这是我见过最详细的Python面向对象编程!建议收藏!

    原标题:这是我见过最详细的Python面向对象编程!建议收藏! 面向对象编程和函数式编程(面向过程编程)都是程序设计的方法,不过稍有区别. 面向过程编程: 1. 导入各种外部库 2. 设计各种全局变量 ...

  6. python编程基础是什么-Python面向对象编程基础解析(一)

    1.什么是面向对象 面向对象(oop)是一种抽象的方法来理解这个世界,世间万物都可以抽象成一个对象,一切事物都是由对象构成的.应用在编程中,是一种开发程序的方法,它将对象作为程序的基本单元. 2.面向 ...

  7. 【Python基础】Python 面向对象编程(上篇)

    我的施工计划图 已完成专题包括: 1我的施工计划 2数字专题 3字符串专题 4列表专题 5流程控制专题 6编程风格专题 7函数使用专题 今天是面向对象编程的上篇:基础专题 Python 面向对象编程 ...

  8. python面向对象编程138讲_Python面向对象编程简单讲解

    学习目标: 1-面向对象编程 2-类和对象 3-对象的属性和方法 4-类的特性 Python面向对象编程 一种编程程序的设计思想,把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数.把计算机 ...

  9. (转)Python 面向对象编程(一)

    Python 面向对象编程(一) 虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程.下面就来了解一下如何在Python中进行对象编程. 一.如何定义一个类 在进行python面向对象 ...

最新文章

  1. Linq基础知识小记二
  2. c++版a+b问题的各种无聊做法
  3. 1.PostgreSQL的学习
  4. WordList02
  5. 2015《大数据》读者意见征集活动——幸运读者名单
  6. C语言程序设计线上测试01,2001年C语言程序设计笔试A卷.doc
  7. 设计模式14_组合结构
  8. 【bzoj2434】[Noi2011]阿狸的打字机【AC自动机】
  9. 熊猫烧香病毒源码及分析
  10. 《工业设计史》第六章:工业、技术与设计
  11. 《上海悠悠接口自动化平台》-1.新增API 与 各参数的描述
  12. android RS485串口接线正反的问题
  13. Bugly-全量更新
  14. 计算机论文外文翻译,计算机专业毕业论文外文翻译2篇
  15. Android自定义日历控件
  16. 计算机系外文文献题目,计算机专业外文文献翻译.doc
  17. 直播电商平台开发,点击让窗口抖动动画效果
  18. 函数的参数、返回、调用、递归
  19. 手机App测试点归纳
  20. 【评测】内毒素检测方法盘点

热门文章

  1. mac上安装windows系统
  2. C语言 while循环和do...while循环
  3. SMART PLC运动超驰功能编程应用(含V2.7版本固件下载)
  4. UE5 纹理系统讲解及常见问题设置及解决方案
  5. 出师一表通今古,夜半挑灯更细看
  6. mysql主键自增策略_MySQL 自增主键机制
  7. 湫湫系列故事——减肥记I(HDU-4808)
  8. Solidworks工程图如何使用,替换图纸格式模板文件
  9. MTR 网络诊断工具
  10. oracle只导入dmp中指定表,oracle 如何导入dmp文件到指定表空间