1、没有super之前,在子类里面需要父类里面的逻辑,但是我们是通过派生(自己定义了一个init,增加了一条line)

class vehichle:#定义一个交通工具的类Country="China"def __init__(self,name,speed,load,power):self.name=nameself.speed=speedself.load=loadself.power=powerdef run(self):print("开动啦")
class Subway(vehichle):#定义一个地铁,继承父类vehichle# pass#如果自己没有init,Subway会继承父类的init方法def __init__(self,name,speed,load,power,line):self.name=nameself.speed=speedself.load=loadself.power=powerself.line=linedef show_info(self):print(self.name,self.line)
line13=Subway("北京地铁","10km/s","10000人","电",13)#实例化一个line13
line13.show_info()#用实例调用类的属性,会自动把实例本身穿进去

C:\python35\python3.exe D:/pyproject/day25/在子类中调用父类.py北京地铁 13 

2、改进一下,在子类中调用父类的init方法

class vehichle:#定义一个交通工具的类Country="China"def __init__(self,name,speed,load,power):self.name=nameself.speed=speedself.load=loadself.power=powerdef run(self):print("开动啦")
class Subway(vehichle):#定义一个地铁,继承父类vehichle# pass#如果自己没有init,Subway会继承父类的init方法def __init__(self,name,speed,load,power,line):vehichle.__init__(self,name,speed,load,power)#调用父类的init方法self.line=linedef show_info(self):print(self.name,self.speed,self.load,self.line)
line13=Subway("北京地铁","10km/s","10000人","电",13)#实例化一个line13
line13.show_info()#用实例调用类的属性,会自动把实例本身穿进去

C:\python35\python3.exe D:/pyproject/day25/在子类中调用父类.py北京地铁 10km/s 10000人 13

3、在子类里面也调用一下父类的run方法

class vehichle:#定义一个交通工具的类Country="China"def __init__(self,name,speed,load,power):self.name=nameself.speed=speedself.load=loadself.power=powerdef run(self):print("开动啦")print("父类的开动啦")
class Subway(vehichle):#定义一个地铁,继承父类vehichle# pass#如果自己没有init,Subway会继承父类的init方法def __init__(self,name,speed,load,power,line):vehichle.__init__(self,name,speed,load,power)#调用父类的init方法self.line=linedef show_info(self):print(self.name,self.speed,self.load,self.line)def run(self):vehichle.run(self)print("%s %s 开动啦" %(self.name,self.line))
line13=Subway("北京地铁","10km/s","10000人","电","13号线")#实例化一个line13
line13.show_info()#用实例调用类的属性,会自动把实例本身穿进去
line13.run()C:\python35\python3.exe D:/pyproject/day25/在子类中调用父类.py北京地铁 10km/s 10000人 13号线开动啦父类的开动啦北京地铁 13号线 开动啦

4、super方法   调用父类的方法

super的方法的好处是,当你的父类的名字改变之后,只需要在Subway那里继承的名字改一下,就行,不用动下面的逻辑

第一种写法:

class vehichle:#定义一个交通工具的类Country="China"def __init__(self,name,speed,load,power):self.name=nameself.speed=speedself.load=loadself.power=powerdef run(self):print("开动啦")print("父类的开动啦")
class Subway(vehichle):#定义一个地铁,继承父类vehichle# pass#如果自己没有init,Subway会继承父类的init方法def __init__(self,name,speed,load,power,line):# vehichle.__init__(self,name,speed,load,power)#调用父类的init方法super().__init__(name,speed,load,power)#调用父类的initself.line=linedef show_info(self):print(self.name,self.speed,self.load,self.line)def run(self):# vehichle.run(self)super().run()#调用父类的runprint("%s %s 开动啦" %(self.name,self.line))
line13=Subway("北京地铁","10km/s","10000人","电","13号线")#实例化一个line13
line13.show_info()#用实例调用类的属性,会自动把实例本身穿进去
line13.run()C:\python35\python3.exe D:/pyproject/day25/super方法的使用.py北京地铁 10km/s 10000人 13号线开动啦父类的开动啦北京地铁 13号线 开动啦第二种写法:super().__init__(name,speed,load,power)等价于super(Subway,self).__init__(name,speed,load,power)super().run()等价于super(Subway,self).run()

我们记住上面的第一种就行了,有的人写第二种我们也要能看懂

class vehichle:#定义一个交通工具的类Country="China"def __init__(self,name,speed,load,power):self.name=nameself.speed=speedself.load=loadself.power=powerdef run(self):print("开动啦")print("父类的开动啦")
class Subway(vehichle):#定义一个地铁,继承父类vehichle# pass#如果自己没有init,Subway会继承父类的init方法def __init__(self,name,speed,load,power,line):# vehichle.__init__(self,name,speed,load,power)#调用父类的init方法# super().__init__(name,speed,load,power)#调用父类的initsuper(Subway,self).__init__(name,speed,load,power)#调用父类的initself.line=linedef show_info(self):print(self.name,self.speed,self.load,self.line)def run(self):# vehichle.run(self)# super().run()#调用父类的runsuper(Subway,self).run()  # 调用父类的runprint("%s %s 开动啦" %(self.name,self.line))
line13=Subway("北京地铁","10km/s","10000人","电","13号线")#实例化一个line13
line13.show_info()#用实例调用类的属性,会自动把实例本身穿进去
line13.run()C:\python35\python3.exe D:/pyproject/day25/super方法的使用.py北京地铁 10km/s 10000人 13号线开动啦父类的开动啦北京地铁 13号线 开动啦

转载于:https://www.cnblogs.com/gouguoqilinux/p/9197239.html

在子类中调用父类的方法super相关推荐

  1. 继承实现的原理、子类中调用父类的方法、封装

    一.继承实现的原来 1.继承顺序 Python的类可以继承多个类.继承多个类的时候,其属性的寻找的方法有两种,分别是深度优先和广度优先. 如下的结构,新式类和经典类的属性查找顺序都一致.顺序为D--- ...

  2. 【Kotlin】Kotlin 类的继承 三 ( super 关键字使用 | super@ 外部调用父类方法 | 子类选择性调用 父类 / 接口 方法 super )

    文章目录 I . 子类调用父类总结 II . 子类调用父类方法 ( super ) III . 子类内部类调用父类方法 ( super@ ) IV . 子类选择调用不同的 父类 / 接口方法 ( su ...

  3. Day19:继承实现的原理、子类中调用父类的方法、封装

    一.继承实现的原来 1.继承顺序 Python的类可以继承多个类.继承多个类的时候,其属性的寻找的方法有两种,分别是深度优先和广度优先. 如下的结构,新式类和经典类的属性查找顺序都一致.顺序为D--- ...

  4. qt 子类调用父类的函数_子类中调用父类的方法

    父类名 . __init__(self, ...) 可以将父类中的init中的属性重复调用,减少代码的重复 class Vehicle: def __init__(self, name, speed, ...

  5. 安卓在子类中调用父类的方法

    非常抱歉,可能是我表述不够清楚.在实际开发中,调用 getParentActivity() 方法需要在子界面中获取到父界面的实例.可以通过以下几种方式来获取父界面实例: 在子界面创建时保存父界面实例 ...

  6. Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)

    Python 在子类中调用父类方法详解(单继承.多层继承.多重继承)   by:授客 QQ:1033553122   测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...

  7. Python在子类中调用父类方法

    1.在子类中调用父类方法 super().方法名() 类名.方法名(self) spuer(要从哪一个类的上一级类开始查找, self).方法名() 子类调用父类方法时,一般都是想对父类方法进行扩展 ...

  8. python方法调用名字不一样_python中调用父类同名方法

    知识回顾: 上节我们学习了类的构造方法. Python中构建构造方法主要使用__init__魔法方法. 实际项目操作中,由于类的继承导致可能覆盖同名的构造方法,导致只能使用子类的构造,而无法调用父类的 ...

  9. c++ 子类对象调用父类的方法

    第一种方式就是子类重写父类的方法,在子类中定义和父类同样的方法,方法体中调用父类的方法 父类代码 #pragma once #include "CClientSocket.h" c ...

最新文章

  1. 26岁创造UNIX,退休后却成为一名飞行员,这位编程界大佬不走寻常路
  2. CVT1100 错误的修复 2009-10-12 11:38
  3. 什么是Servlet?
  4. QML for Android 实现二维码扫描(QZXing)
  5. 计算机d盘无法格式化,电脑D盘无法格式化怎么办 D盘无法格式化问题解决办法...
  6. arduino读取matlab串口,Matlab Arduino实时串行通信,采样0.004 s
  7. c语言数组中两元素交换,如可交换两个数组中的元素?
  8. spring(4)面向切面的Spring(AOP)
  9. tomcat7.0支持什么版本的jdk_恭喜你喜提JDK,那你知道JDK是什么吗?先来看看吧
  10. 【PostgreSQL-9.6.3】psql常用命令
  11. BZOJ 4033: [HAOI2015]树上染色
  12. 【sklearn第二十三讲】异常检测
  13. Android Architecture Blueprints----安卓架构详细分析
  14. Linux 完全卸载 MySQL
  15. 2021年小目标检测最新研究综述
  16. 圆弧周长公式_扇形面积和周长计算公式 【关于扇形的所有公式(周长、弧长、半径、圆心角)写得清楚、详细......
  17. 电子计算机的诞生与发展
  18. VR全景视频、图片播放器
  19. os.getcwd()函数的用法
  20. 服务器ae是什么位置,ae 渲染服务器

热门文章

  1. 剑指Offer:面试题33——把数组排成最小的数(java实现)(未完待续)
  2. Linux按键驱动,中断实现流程
  3. DataGridView 编程
  4. 北京、深圳 | 百度视觉算法研发实习生 人脸活体方向
  5. 时隔一年,盘点CVPR 2019影响力最大的20篇论文
  6. 科技部发文:破除“唯论文”不良导向!网友:靠水论文拿奖励的人不开心了...
  7. 单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读
  8. Python中的reshape()
  9. redis java连接出错_redis连接错误与spring boot
  10. python字符串(连载二)|字符串内置函数原来还可以这么玩!