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中暂存上传图片的方法
Feb 18 Python
python抓取百度首页的方法
May 19 Python
Python中MySQL数据迁移到MongoDB脚本的方法
Apr 28 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
Sep 21 Python
Python入门必须知道的11个知识点
Mar 21 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
python爬取cnvd漏洞库信息的实例
Feb 14 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
PyTorch: 梯度下降及反向传播的实例详解
Aug 20 Python
opencv3/C++实现视频背景去除建模(BSM)
Dec 11 Python
python 多进程队列数据处理详解
Dec 23 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 16 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中养成7个面向对象的好习惯
2010/01/28 PHP
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
PHP生成压缩文件实例
2015/02/07 PHP
php计算整个目录大小的方法
2015/06/19 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
BootStrap selectpicker后台动态绑定数据
2017/06/01 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
Python使用random和tertools模块解一些经典概率问题
2015/01/28 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
2019/08/01 Python
Python笔试面试题小结
2019/09/07 Python
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
消防先进事迹材料
2014/02/10 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
施工安全责任书
2014/04/14 职场文书
2015年教学工作总结
2015/04/02 职场文书
利用Python网络爬虫爬取各大音乐评论的代码
2021/04/13 Python
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers