范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

python中的super是什么?

  目录 技术背景 案例测试结果分析 总结概要 版权声明 技术背景
  python中的super,名为超类,可以简单的理解为执行父类的__init__函数。由于在python中不论是一对一的继承,还是一子类继承多个父类,都会涉及到执行的先后顺序的问题。那么本文就着重看下super的具体作用。案例测试
  通过设计这样一个案例,我们可以明确super的前后逻辑关系:先定义一个父类initial  ,在这个父类中有参数值param  和函数func  ,然后用子类new  来继承父类initial  。继承之后,在子类的__init__  函数中super  执行的前后去打印参数值param  和函数func  的返回值,相关代码如下所示:# 定义父类 class initial(object):     def __init__(self):         print ("This print is from initial object")         # 定义父类参数         self.param = 3      # 定义父类函数     def func(self):         return 1  # 定义子类 class new(initial):     def __init__(self):         print ("This print is from new object")         # 打印子类函数值         print (self.func())         # 执行父类初始化函数         super(new, self).__init__()         # 打印父类参数值         print(self.param)         self.param = 4      # 定义子类函数     def func(self):         return 2  if __name__ == "__main__":     new()
  代码的执行结果如下所示:This print is from new object 2 This print is from initial object 3结果分析
  首先我们注意到,父类initial  中的__init__  函数内的打印语句,是在super之后才输出的,这说明了,super  函数是在执行父类的初始化操作。那么如果没有执行super  ,new  子类对initial  父类的继承体现在哪里呢?答案就是父类的成员函数,比如这样的一个案例:class initial(object):     def __init__(self):         print ("This print is from initial object")         self.param = 3     def func(self):         return 1  class new(initial):     def __init__(self):         print ("This print is from new object")         print (self.func())         super(new, self).__init__()         print(self.param)         self.param = 4  if __name__ == "__main__":     new()
  其实就是删掉了子类中重载的成员函数,那么得到的结果如下:This print is from new object 1 This print is from initial object 3
  可以发现在执行super之前就可以打印父类的func  函数的函数值。所以python中继承的逻辑是这样的:
  initial.func() new.__init__() new.func()/new.param super() initial.__init__()/initial.param new.__init__()/new.paraminitial.func() new.__init__() new.func()/new.param super() initial.__init__()/initial.param new.__init__()/new.param
  也正是因为只有执行了super  才能初始化父类中的成员变量,因此如果在super之前是无法访问父类的成员变量的。总结概要
  本文通过一个python的实际案例的设计,来讲解python面向对象的技术——类的继承中必用的super函数的逻辑。其实我们可以把python中类的继承理解成这样的一个过程:当我们在括号中明确了父类时,其实已经引用了父类的成员函数,但是并没有执行父类的初始化函数。在执行子类的初始化函数的同时,会检查是否重载了父类的成员函数,如果重载则会直接覆盖。而只有在执行了super之后,才相当于执行了父类的初始化函数,此时才可以访问父类的成员变量。版权声明
  本文首发链接为:https://www.cnblogs.com/dechinphy/p/super.html
  作者ID:DechinPhy
  更多原著文章请参考:https://www.cnblogs.com/dechinphy/
  打赏专用链接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
  腾讯云专栏同步:https://cloud.tencent.com/developer/column/91958

禁止先卖药后补方互联网医疗将告别野蛮生长来源经济日报禁止先卖药后补方限定AI问诊互联网医疗将告别野蛮生长本报记者吴佳佳为进一步规范互联网诊疗,促进互联网诊疗服务健康发展,保证医疗质量和医疗安全,国家卫生健康委组织起草的互转型网络货运,是三方物流企业重生的必经之路这几年物流市场环境发生了翻天覆地的变化,从传统的运营模式,到现在电商物流的崛起,快递和快运企业的快速发展,这些变化使得三方物流群体受到了很大冲击,也暴露了这类企业的弊端。转型网络货据报道,苹果正在努力实现所有设备都可以相互充电的未来Apple的AirPower无线充电器是该公司最著名的故障之一,已于2017年宣布,并由于报告的实际困难于2019年被立即取消。但该项目可能会取得成果。彭博的Apple记者Mark你知道吗?微信支付竟能被陌生人绑定,多人中招,赶紧速查并清除你知道吗?微信支付居然能被陌生人绑定,多人已中招,赶紧速查并清除!大家好,我是秦韵莞香,手机微信在给我们带来便利的同时,如果使用不正确,很可能会造成我们个人信息的泄露与财产的损失!雅迪台铃小刀推出3款外卖车,最大续航200公里,冬天能跑长途请您在阅读前,先点击上面的关注。感谢您的支持,我们将为您带来更多有价值的内容。一到冬天,很多外卖员都会遇到电动车电池不耐用续航差或者电动车配置不够用的问题。那么这个时候选择什么样的华人首富易主赵长鹏,身价达900亿美元,超出中国内地首富钟睒睒35,他为何能登顶这个位置?赵长鹏在中国的造富之路在中国大陆一度受阻。由于比特币等加密货币市场的暴涨,加密货币交易所在国内曾一度野蛮生长,同时也一直是监管重拳打击的对象。2017年9月,币安交易所刚开张没多久苹果(AAPL。US)将于2022年初推出第三代iPhoneSE智通财经APP获悉,据TrendForce报道,苹果公司(AAPL。US)正准备在2022年第一季度推出第三代iPhoneSE。TrendForce补充称,第三代iPhoneSE可你会放弃苹果手机,来支持国产品牌吗?我觉得手机无所谓品牌,无所谓进口或者国产,要根据自己的实际需求和经济能力来理性选择。苹果手机我用过的不多,2011年买过一部4S,2016年买了一部IPoneSE,2018年买了一家里装了新风系统,效果真的有宣传的那么好吗?在回答这个问题之前,想跟大家强调一点就是,新风系统空气净化器(要记住这个认知)。新风系统是用来促进室内外空气流通空气净化器就是把室内的空气再来一遍过滤大家理清楚这个点后,对新风系统老年人耳聋跟小孩子耳聋戴助听器一样效果吗?老年人耳聋跟小孩子耳聋戴助听器效果不太一样,因为老人随着年纪的增大,身体各项机能都在减退,言语识别能力会越来月低,相反小孩正在生长发育,相比较而言,孩子比老人的佩戴效果有可能会好一小米宣布新一轮组织架构调整潘九堂担任参谋长李涛主持质量委员会工作11月26日下午消息,小米集团今日宣布新一轮的组织架构调整及干部任命,涉及集团管理层手机部中国区互联网业务部几个部门,以持续提升组织管理能力,向三年时间全球第一的目标全面冲刺。在集