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和shell变量互相传递的几种方法
Nov 20 Python
Python调用C语言开发的共享库方法实例
Mar 18 Python
在Python中使用HTMLParser解析HTML的教程
Apr 29 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
python利用lxml读写xml格式的文件
Aug 10 Python
带你认识Django
Jan 15 Python
python实现得到当前登录用户信息的方法
Jun 21 Python
python pyinstaller打包exe报错的解决方法
Nov 02 Python
Python常用模块函数代码汇总解析
Aug 31 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 Python
Django中ORM的基本使用教程
Dec 22 Python
python 合并多个excel中同名的sheet
Jan 22 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实现jQuery扩展函数
2009/10/30 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
php模板引擎技术简单实现
2016/03/15 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
如何选择适合你的JavaScript框架
2017/11/20 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
2018/03/03 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
eclipse创建python项目步骤详解
2019/05/10 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
Python 监测文件是否更新的方法
2019/06/10 Python
Python读取YAML文件过程详解
2019/12/30 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
研究生毕业自我鉴定范文
2014/03/27 职场文书
事业单位考核材料
2014/05/21 职场文书
给妈妈洗脚活动方案
2014/08/16 职场文书
退税申请报告怎么写
2015/05/18 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
开学第一天的感想
2015/08/10 职场文书
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫