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实现批量监控网站
Sep 09 Python
浅析Python中yield关键词的作用与用法
Nov 29 Python
基于ID3决策树算法的实现(Python版)
May 31 Python
python实现给微信公众号发送消息的方法
Jun 30 Python
Python中eval带来的潜在风险代码分析
Dec 11 Python
python构建深度神经网络(续)
Mar 10 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
May 04 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 Python
numpy的Fancy Indexing和array比较详解
Jun 11 Python
通过实例了解Python异常处理机制底层实现
Jul 23 Python
Python判断变量是否是None写法代码实例
Oct 09 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
截获网站title标签之家内容的例子
2006/10/09 PHP
PHP实现图片旋转效果实例代码
2014/10/01 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
jquery Tab效果和动态加载的简单实例
2013/12/11 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
详解Vue源码之数据的代理访问
2018/12/11 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
python使用多线程不断刷新网页的方法
2015/03/31 Python
python实现随机加减法生成器
2020/02/24 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
女装和独特珠宝:Sundance Catalog
2018/09/19 全球购物
业务主管岗位职责范本
2013/12/25 职场文书
社区七一党员活动方案
2014/01/25 职场文书
三下乡活动方案
2014/01/31 职场文书
一分钟演讲稿
2014/04/30 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
六查六看心得体会
2014/10/14 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
Redis缓存-序列化对象存储乱码问题的解决
2021/06/21 Redis
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL