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中的With语句
Feb 02 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
May 06 Python
python3批量删除豆瓣分组下的好友的实现代码
Jun 07 Python
详解python3百度指数抓取实例
Dec 12 Python
Python元组知识点总结
Feb 18 Python
python基础知识(一)变量与简单数据类型详解
Apr 17 Python
python实现BP神经网络回归预测模型
Aug 09 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
python访问hdfs的操作
Jun 06 Python
Python偏函数Partial function使用方法实例详解
Jun 17 Python
Python-openCV开运算实例
Jul 05 Python
如何验证python安装成功
Jul 06 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中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
JavaScript常用验证函数实例汇总
2014/11/25 Javascript
js中document.write的那点事
2014/12/12 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
python中subprocess批量执行linux命令
2018/04/27 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
python创建学生管理系统
2019/11/22 Python
Python3直接爬取图片URL并保存示例
2019/12/18 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
网络专业学生个人的自我评价
2013/12/16 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
项目建议书格式
2014/03/12 职场文书
欢迎家长标语
2014/10/08 职场文书
广告业务员岗位职责
2015/02/13 职场文书
导游词之清晏园
2019/11/22 职场文书
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android
解决Maven项目中 Invalid bound statement 无效的绑定问题
2021/06/15 Java/Android
nginx实现动静分离的方法示例
2021/11/07 Servers