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 相关文章推荐
go语言计算两个时间的时间差方法
Mar 13 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
说说如何遍历Python列表的方法示例
Feb 11 Python
解决pyecharts在jupyter notebook中使用报错问题
Apr 23 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
Oct 24 Python
Django继承自带user表并重写的例子
Nov 18 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
解决pyqt5异常退出无提示信息的问题
Apr 08 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
python如何代码集体右移
Jul 20 Python
python定时截屏实现
Nov 02 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
2021/03/09 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
javaScript call 函数的用法说明
2010/04/09 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
工商管理实习生自我鉴定范文
2013/12/18 职场文书
文明生主要事迹
2014/05/25 职场文书
焦裕禄精神心得体会
2014/09/02 职场文书
React + Threejs + Swiper 实现全景图效果的完整代码
2021/06/28 Javascript