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 18 Python
浅谈Pandas:Series和DataFrame间的算术元素
Dec 22 Python
python用opencv批量截取图像指定区域的方法
Jan 24 Python
python用win32gui遍历窗口并设置窗口位置的方法
Jul 26 Python
python调用支付宝支付接口流程
Aug 15 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
解决Jupyter无法导入已安装的 module问题
Apr 17 Python
基于nexus3配置Python仓库过程详解
Jun 15 Python
Python 没有main函数的原因
Jul 10 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 Python
python办公自动化之excel的操作
May 23 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 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
php !function_exists("T7FC56270E7A70FA81A5935B72EACBE29"))代码解密
2011/01/07 PHP
PHP数组交集的优化代码分析
2011/03/06 PHP
PHP中读写文件实现代码
2011/10/20 PHP
浅析php与数据库代码开发规范
2013/08/08 PHP
CodeIgniter基本配置详细介绍
2013/11/12 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
可输入的下拉框
2006/06/19 Javascript
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
jQuery对表单元素的取值和赋值操作代码
2011/05/19 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
2013/08/02 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
详解JS函数重载
2014/12/04 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
jquery实现轮播图特效
2020/04/12 jQuery
vue 内联样式style中的background用法说明
2020/08/05 Javascript
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
重命名批处理python脚本
2013/04/05 Python
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
pandas实现导出数据的四种方式
2020/12/13 Python
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
动物学专业毕业生求职信
2013/10/11 职场文书
班主任班级寄语大全
2014/04/04 职场文书
如何写新闻稿
2015/07/18 职场文书