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中用于去除空格的三个函数的使用小结
Apr 07 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
解决python3读取Python2存储的pickle文件问题
Oct 25 Python
python TF-IDF算法实现文本关键词提取
May 29 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
python带参数打包exe及调用方式
Dec 21 Python
Python网络爬虫信息提取mooc代码实例
Mar 06 Python
Python字符串格式化f-string多种功能实现
May 07 Python
使用pyecharts1.7进行简单的可视化大全
May 17 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
Jul 30 Python
手把手教你用Django执行原生SQL的方法
Feb 18 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中常用数组处理方法实例分析
2008/08/30 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
tp5修改(实现即点即改)
2019/10/18 PHP
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
2013/10/15 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
微信小程序 less文件编译成wxss文件实现办法
2016/12/05 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
Python基于whois模块简单识别网站域名及所有者的方法
2018/04/23 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
浅析Python 序列化与反序列化
2020/08/05 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
教师节宣传方案
2014/05/23 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
开业庆典活动策划方案
2014/09/21 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
师德师风培训感言
2015/08/03 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
解决 Redis 秒杀超卖场景的高并发
2022/04/12 Redis