今天咱们聊点啥呢?要不还是聊点Python基础的东东吧,大家已经都知道啦,Python呢是一种面向对象的脚本编程语言,那面向对象的编程语言呢,都会支持面向对象的三大特性,你知道是哪三大特性吗?当然是咱们常常挂在嘴边的封装、继承和多态啦,那今天呢,咱们就先说个用得最多的继承吧,好啦,就重点讲讲Python相关的类的继承啦!

好啦,那咱们就开始聊聊吧!


Python类的定义

首先开门见山说一下哦,Python的类的继承是支持多继承机制的。

那Python的类的继承是怎样的呢?其实呢,Python的类继承很简单哦,就是在定义子类时,将多个父类放在子类后面的圆括号中就可以啦!语法格式如下所示哦:

class SubClass (SuperClass1, SuperClass2, ...)

看到了吗,Python类的继承定义的格式是不是很简单哦!只要在子类的后面加个圆括号,然后在括号里面添加上所要继承的父类就可以啦!

其实呢,Python类和其他面向对象语言是一样滴,如果不显示定义继承一个父类,也是有个默认的公共父类哦,它就是object类,所以呀,object类是所有Python类的父类哦,有两种可能哦,一种可能是其直接父类,另一种可能呢当然就是其间接父类啦!

其实呢,如果从Python子类和其父类两个角度来看的话,是两种不同的效果哦,子类呢就相当于对父类进行了扩展啦,而父类呢则是派生出子类啦!

好啦,为了让大家对Python类的继承有深入的理解,咱们还是老规矩啦,举个“栗子”:

好啦,看到了吗,上面的“栗子”程序中呢,定义了两个父类,分别是Animal类和Pig类哦,然后呢,定义了一个子类Peggy,它继承了两个父类,这个Peggy子类呢并木有定义自己的程序单元哦,所以就用pass代替啦!

这样,当主程序创建了Peggy类对象后呢,就可以访问Peggy类中的对象啦,分别是继承自父类Animal的info()方法和继承自Pig类的taste()方法,这就是继承的强大作用,就是相当于子类Peggy扩展了父类Animal和Pig哦。

好啦,咱们运行一下上面这个“栗子”看看结果吧:


Python的多继承

前面咱们说啦,Python是支持多继承的,但是呢,还是不建议大家用哦,因为多继承干的活单继承都能干哦,而且,单继承在流程和思路来说更为清晰和易懂哦!

到这可能大家有问题啦:人家Python自身都支持多继承啦,你为啥还不推荐大家用呢,存在和支持就是有道理的啊?好啦,为了解答大家的这个疑惑,咱们就来聊聊多继承的弊端吧!

首先呢,咱们来假定一个场景,就是哈,当一个子类有多个直接父类,也就是多继承的话,这个子类呢就会继承得到它的所有父类的方法哦,这是大家所清楚的,但是呢,如果这个子类所继承的多个父类中存在同名的方法时呢,这时会出现什么情况呢?在这呢,俺先卖个关子,咱们还是老惯例,举个“栗子”让大家看看啦,这样印象更深刻哦!

好啦,看到上面这个“栗子”了吗,咱们分别定义了两个父类SuperClass1和SuperClass2,这两个父类呢,有个共同点,就是包含相同的info()方法哦,这是咱们再定义一个继承了这两个父类的子类SubClass,这时呢,咱们再主程序中创建了子类SubClass的对象,然后用子类对象sc去调用info()方法,你们猜这是会发生什么情况呢?

可以运行一下看看哦:

看到了吗,运行后输出的是父类SuperClass1中的info()方法!在这先不给大家解释哦,咱们修改一下上面的“栗子”,将SubClass子类所继承的两个父类的顺序调换一下,看看结果如何哦,程序就编程如下样式啦:

将两个父类的继承顺序进行了位置调换哦,这时咱们再运行看看结果如何哦:

看到了吗,这时输出的是父类SuperClass2中的info()方法哦!

好啦,到这呢,可能已经由朋友看明白了,其实呢,在Python的多继承中,如果子类所继承的父类中出现了相同的方法,这时就会和子类所继承的父类的顺序有关哦,排在前面的父类中的方法就会遮盖排在后面的父类中的方法哦!当然啦,如果子类所继承的父类中没有相同的方法,就和父类的顺序没有关系啦,因为子类所调用的父类的方法会按所继承的父类的顺序查找,这时父类因为没有相同的方法,也就是方法是唯一的,它就是找到这个方法所在的父类,然后进行调用哦!对于这点大家一定要牢记哦!

好啦,关于Python多继承的弊端,相信大家通过上面的介绍已经深刻理解了哈,因此呢,还是建议大家尽量少用多继承哦!

好啦,今天关于Python的类继承相关的东东就先和大家聊这么多吧,咱们下次再见哦![再见]


敬请关注“品位集结号”,为您带来意外的小知识![比心][握手][比心]

css不继承父类样式_提升你的Python编程能力,细说类的继承,拿走不谢相关推荐

  1. python定义类_提升你的Python编程能力,细说类的继承,拿走不谢

    今天咱们聊点啥呢?要不还是聊点Python基础的东东吧,大家已经都知道啦,Python呢是一种面向对象的脚本编程语言,那面向对象的编程语言呢,都会支持面向对象的三大特性,你知道是哪三大特性吗?当然是咱 ...

  2. css不继承上级样式_【FrontEnd】CSS

    总目录 CSS3 属性 布局 导入 1.CSS (1)CSS3新增属性 圆角(border-radius:8px) 增加了更多的CSS选择器 多背景 Rgba.渐变gradient 过渡transit ...

  3. div不继承父类样式_Python编程思想(27):类的继承

    -----------支持作者请转发本文-----------李宁老师已经在「极客起源」 微信公众号推出<Python编程思想>电子书,囊括了Python的核心技术,以及Python的主要 ...

  4. css复选框样式_使用CSS样式复选框

    css复选框样式 Introduction: 介绍: Sometimes we want to develop a website or web page that would contain a f ...

  5. div不继承父类样式_Java三大特性之继承

    继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有 ...

  6. css 好困难字体样式_帮助阅读困难者的字体和浏览器扩展

    css 好困难字体样式 G-Stock Studio/Shutterstock G-Stock Studio / Shutterstock Dyslexia is a learning conditi ...

  7. 【面向对象编程】(4) 类的继承,重构父类中的方法

    各位同学好,今天和大家分享一下面向对象编程中,类的三大特征之继承.主要介绍:子类继承父类的基本方法:重写父类的类方法:重构父类的初始化方法:super() 方法.本节主要是单继承,多继承在下一节中介绍 ...

  8. python编程-迭代器(类,方法,继承),函数,数据结构,

    a, b = 0, 1 while b < 10:print(b) #print(b,end=',')a, b = b, a+b相当于 n=b m=a+b a=n b=m输出: 1 1 2 3 ...

  9. 【廖雪峰python进阶笔记】类的继承

    1. 继承 如果已经定义了Person类,需要定义新的Student和Teacher类时,可以直接从Person类继承: class Person(object):def __init__(self, ...

最新文章

  1. 人群分析综述--Crowd Scene Understanding from Video: A Survey
  2. java 后端校验_如何实现Java后端数据校验?看这篇就足够!
  3. 随机生成 字体大小--转
  4. Web前端笔记-解决Vue编写的输入框(input、textarea等)使用JS设置value时提交表单无效的问题
  5. 95-140-130-源码-transform-算子coGroup
  6. 深入浅出hive-hive简介
  7. 转浅谈缓存击穿、缓存并发和缓存失效
  8. 在tomcat文件夹下启动war项目
  9. NHibernate N+1问题实例分析和优化
  10. 当前流行的PE系统最纯净、最轻量、最快捷
  11. vue项目中使用ramda库
  12. Smoothed Dilated Convolutions for Improved Dense Prediction
  13. 拟合函数未知数个数与用于拟合的序列点数的关系
  14. win10锁屏c语言,Win10秘笈:如何在锁屏打开任意应用程序?
  15. (转)webpack简介
  16. 网工知识角|如何理解网络拓扑中的下一跳地址
  17. 公有云 私有云及架构
  18. 【教程】EasyDSS演示模式播放ws-flv格式视频流,如何控制3分钟自动跳转登录页?
  19. 凌晨4点的大家都在做什么?大数据告诉你
  20. 百度网盘不限速下载工具,无需登录实现高速下载 (1)

热门文章

  1. jre for mac 删除_在 Mac 的 Docker Desktop 中运行 K8s
  2. spring5.x cxf3.4.x 服务端和客户端 非maven版本
  3. FileZilla 下载安装使用
  4. 开发经验分享_01_遇到问题三步走(思路+实战)
  5. idea配置的导入导出
  6. python输入三行数据_3行Python代码就能获取海量数据?
  7. igmp是哪个层协议_通俗易懂网络协议(IP)
  8. 深圳市南山区学计算机的视频课程,新手学电脑全套视频教程(1-27集)
  9. java vector 输出_5.7(java学习笔记)Vector、Enumeration
  10. Python 线程信号量 semaphore - Python零基础入门教程