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 相关文章推荐
wxPython框架类和面板类的使用实例
Sep 28 Python
Python递归遍历列表及输出的实现方法
May 19 Python
简单实现python爬虫功能
Dec 31 Python
Python中字典(dict)合并的四种方法总结
Aug 10 Python
Django 路由系统URLconf的使用
Oct 11 Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
python下载微信公众号相关文章
Feb 26 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
Python实现插入排序和选择排序的方法
May 12 Python
如何通过python画loss曲线的方法
Jun 26 Python
python web框架中实现原生分页
Sep 08 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验证码函数代码(简单实用)
2013/09/29 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
2015/12/19 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
ext 同步和异步示例代码
2009/09/18 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
2016/05/14 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
Python中类型关系和继承关系实例详解
2015/05/25 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
python 简单的调用有道翻译
2020/11/25 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
武汉高蓝德国际.net机试
2016/06/24 面试题
会计毕业生自我鉴定
2013/11/04 职场文书
购房委托书范本
2014/09/18 职场文书
结婚堵门保证书
2015/05/08 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
Mysql Show Profile
2021/04/05 MySQL
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript
hive数据仓库新增字段方法
2022/06/25 数据库