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处理CSV与List的转换方法
Apr 19 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
Apr 27 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
python爬虫selenium和phantomJs使用方法解析
Aug 08 Python
解决Django连接db遇到的问题
Aug 29 Python
使用apiDoc实现python接口文档编写
Nov 19 Python
pygame实现弹球游戏
Apr 14 Python
Django实现后台上传并显示图片功能
May 29 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
python 解决pycharm运行py文件只有unittest选项的问题
Sep 01 Python
python opencv实现图像配准与比较
Feb 09 Python
Pytorch中的学习率衰减及其用法详解
Jun 05 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中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
5款Javascript颜色选择器
2009/10/25 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
JS输出空格的简单实现方法
2016/09/08 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
在Python中使用zlib模块进行数据压缩的教程
2015/06/26 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
python实现两个文件夹的同步
2019/08/29 Python
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
质量工程师岗位职责
2013/11/16 职场文书
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
中秋寄语大全
2014/04/11 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
Django debug为True时,css加载失败的解决方案
2021/04/24 Python
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python