理解Python中的继承规则和继承顺序
先来看一段代码:
class First(object):def __init__(self):print ("first")class Second(object):def __init__(self):print ("second")class Third(object):def __init__(self):print ("third")class Forth(object):def __init__(self):print ("forth")class Five(First, Second, Third, Forth):def __init__(self):print ("that's it")a = Five()
这段代码的输出结果是:
that's it
也就是说,在class Five
中的def__init__(self)
override了父类(classes: First, Second, Third, Forth)的def__init__(self)
。
class First(object):def __init__(self):print ("first")class Second(object):def __init__(self):print ("second")class Third(object):def __init__(self):print ("third")class Forth(object):def __init__(self):print ("forth")class Five(First, Second, Third, Forth):def __init__(self):super().__init()__print ("that's it")a = Five()
输出结果是:
first
that's it
也就是说,class Five
先继承了父类 First 的def __init__(self)
,然后执行自己重新定义的def __init__(self)
。
如果在所有父类中也使用super().__init__
,事情变得有趣:
class First(object):def __init__(self):super().__init__()print ("first")class Second(object):def __init__(self):super().__init__()print ("second")class Third(object):def __init__(self):super().__init__()print ("third")class Forth(object):def __init__(self):super().__init__()print ("forth")class Five(First, Second, Third, Forth):def __init__(self):super().__init__()print ("that's it")a = Five()
这段代码的输出结果是:
forth
third
second
first
that's it
也就是说,如果在父类中都加入super()
,class Five
执行父类中def __init__()
的顺序是class Forth
-> class Third
-> class Second
-> class First
。
也就是说,class Five
在继承了class First
后,不会马上停止并执行class FIrst
中的def __init__()
,而是继续往下搜寻,直到最后。
转载于:https://www.cnblogs.com/yaos/p/7071190.html
理解Python中的继承规则和继承顺序相关推荐
- python中的继承冲突及继承顺序
python中的继承冲突及继承顺序 简单的菱形继承 设计类如下 #mermaid-svg-IYOh6g5InwMB9svy {font-family:"trebuchet ms", ...
- python中继承是什么意思_如何理解Python中的继承?python入门
如何理解Python中的继承?如今,python编程语言深受企业和个人的喜爱.python开发工程师是近年来互联网行业非常热门的职业岗位之一.学习python的人除了零基础的,还有一部分是在职运维.在 ...
- python中类的继承规则
python中类的继承规则 在学习python中的继承规则之前,首先要知道python中类的划分. 只要继承object类的就是新式类,不继承object类的都是经典类. 在python3中,所有的类 ...
- python中的继承有什么特点_python类的继承是什么?类的继承有什么样的规则?
在这篇文章之中我们来了解一下python类的继承,对于刚刚接触到python这一编程语言的朋友来说,对于python类的继承的了解应该比较少,不过没关系,在接下来的文章之中我们就来了解一下python ...
- Python中的继承和多态
本文以生活中的基础现象为切入点,主要介绍了Python基础中继承和多态,包括单继承.多继承的语法.多态常见的 "鸭子类型". 以及如何重写父类的方法都做了详细的讲解. 一.继承的介 ...
- 全面理解python中self的用法
self代表类的实例,而非类. class Test:def prt(self):print(self)print(self.__class__)t = Test() t.prt() 执行结果如下 & ...
- Python中菱形继承的MRO顺序及property属性
Python中菱形继承的MRO顺序及property属性 文章目录 Python中菱形继承的MRO顺序及property属性 一.Python中菱形继承的MRO顺序 1. 单独调用父类的方法 2. 多 ...
- python赋值语句对错_深入理解Python中变量赋值的问题
前言 在Python中变量名规则与其他大多数高级语言一样,都是受C语言影响的,另外变量名是大小写敏感的. Python是动态类型语言,也就是说不需要预先声明变量类型,变量的类型和值在赋值那一刻被初始化 ...
- 深入理解Python中的全局解释锁GIL
深入理解Python中的全局解释锁GIL 转自:https://zhuanlan.zhihu.com/p/75780308 注:本文为蜗牛学院资深讲师卿淳俊老师原创,首发自公众号https://mp. ...
最新文章
- 数据库中的select 1,select count(1),order by 1
- 现阶段的微信小程序能实现直播功能么?
- 中国首个火星探测器天问一号发射成功!
- linux wget 下载文件 报错 To connect to xxxx, use ‘--no-check-certificate’ 解决方法
- linux c 编译错误 conflicting types for 的解决办法
- appium安装完成后运行和执行python脚本的错误合集
- 这个五月,我拿到了腾讯暑期offer
- 40张图彻底揭秘:输入网址究竟发生了什么?
- 殷墟 太行山 红旗渠
- matlab语言 列车平稳性指标,铁道车辆平稳性分析报告.docx
- 模拟驾驶能力输出,赋能客户提升稳定性信心
- 厦门one_理想ONE真是“500万内最好的车”?
- Qt 自定义界面(实现无边框、可移动)
- 十大WordPress安全设置技巧
- 同一页面实现多个Tab选项卡功能
- 怎么用计算机撩人,如何用你的专业“撩人”?
- ppt科研绘图之通过vba一键导出pdf
- python英文文本情感分析_舆情信息浩如烟海?看看如何用Python进行英文文本的情感分析...
- Win10系统更新后开机密码错误怎么解决?
- MySQL高可用之DRBD
热门文章
- python怎么让py里面逐行运行_[python]开发环境bug(求助)
- ctfshow-萌新-web9( 利用命令执行漏洞读取网站敏感文件)
- SQLSERVER日期时间汇总
- ppt扇形图怎么显示数据_PPT图表除了显示数据变化,还可以干嘛?
- SQL SERVER 大小写敏感设置及排序规则详解
- chromedriver 版本
- [Web 前端] CSS篇之 4. position 和 display 的取值和各自的意思和用法
- printf参数的问题
- MIT自适应律MRAC的理解和MATLAB实现
- python创建自定义函数is_number()来判断一个字符是否是数字