python支持多继承吗


Posted in Python onJune 19, 2020

大部分面向对象的编程语言(除了C++)都只支持单继承,而不支持多继承,为什么呢?因为多继承不仅增加编程复杂度,而且容易导致莫名其妙的错误。

Python虽然语法上支持多继承,但是却不推荐使用多继承,而是推荐使用单继承,这样可以保证编程思路更清晰,也可以避免不必要的麻烦。

当以一个子类有多个直接父类时,该子类会继承得到所有父类的方法,但是如果其中有多个父类包含同名方法会发生什么?此时排在前面的父类中的方法会“遮蔽”后面父类中的方法。

栗子如下:

#coding=utf-8
class Item:
  def info(self):
    print("Item中的方法",'这是一个商品')
    
class Product:
  def info(self):
    print('Product中的方法','这是一个能赚钱的商品')
    
class Computer(Item,Product):
  pass
  
c = Computer()
c.info()

控制台打印如下:

Item中的方法,这是一个商品

解释:控制台打印的是Item类中的方法,所以说子类所继承的父类中的方法,如果存在同名,前面的会“遮蔽”后面的即前面的直接父类优先级高于后面的。

Python关于多继承知识点扩展:

大部分面向对象的编程语言(除了C++)都只支持单继承,而不支持多继承,为什么呢?因为多继承不仅增加编程复杂度,而且容易导致莫名其妙的错误。

Python虽然语法上支持多继承,但是却不推荐使用多继承,而是推荐使用单继承,这样可以保证编程思路更清晰,也可以避免不必要的麻烦。

当以一个子类有多个直接父类时,该子类会继承得到所有父类的方法,但是如果其中有多个父类包含同名方法会发生什么?此时排在前面的父类中的方法会“遮蔽”后面父类中的方法。

栗子如下:

#coding=utf-8
class Item:
  def info(self):
    print("Item中的方法",'这是一个商品')

class Product:
  def info(self):
    print('Product中的方法','这是一个能赚钱的商品')

class Computer(Item,Product):
  pass

c = Computer()
c.info()

解释:控制台打印的是Item类中的方法,所以说子类所继承的父类中的方法,如果存在同名,前面的会“遮蔽”后面的即前面的直接父类优先级高于后面的。

以上就是python支持多继承吗的详细内容,更多关于python是否支持多继承的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现图片批量剪切示例
Mar 25 Python
使用Python的Twisted框架实现一个简单的服务器
Apr 16 Python
Python实现二叉堆
Feb 03 Python
浅析Python中yield关键词的作用与用法
Nov 29 Python
python实现决策树、随机森林的简单原理
Mar 26 Python
python复制列表时[:]和[::]之间有什么区别
Oct 16 Python
python实现高斯判别分析算法的例子
Dec 09 Python
使用pyecharts1.7进行简单的可视化大全
May 17 Python
Python库安装速度过慢解决方案
Jul 14 Python
Python绘图实现台风路径可视化代码实例
Oct 23 Python
Python中openpyxl实现vlookup函数的实例
Oct 28 Python
如何用Python搭建gRPC服务
Jun 30 Python
python和php哪个容易学
Jun 19 #Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 #Python
Python魔术方法专题
Jun 19 #Python
关于Theano和Tensorflow多GPU使用问题
Jun 19 #Python
如何对python的字典进行排序
Jun 19 #Python
浅谈Python中的继承
Jun 19 #Python
python程序需要编译吗
Jun 19 #Python
You might like
php时间不正确的解决方法
2008/04/09 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
PHP中phar包的使用教程
2017/06/14 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
Js中sort()方法的用法
2006/11/04 Javascript
JavaScript 学习初步 入门教程
2010/03/25 Javascript
js 数值项目的格式化函数代码
2010/05/14 Javascript
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
2011/08/23 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
[02:46]完美世界DOTA2联赛PWL DAY4集锦
2020/11/03 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
python中readline判断文件读取结束的方法
2014/11/08 Python
200行python代码实现2048游戏
2019/07/17 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
2014年语文教师工作总结
2014/12/18 职场文书
个人求职信格式范文
2015/03/20 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python
详解Javascript实践中的命令模式
2021/05/05 Javascript
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis
小程序自定义轮播图圆点组件
2022/06/25 Javascript