在子类中调用父类的方法super
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.继承顺序 Python的类可以继承多个类.继承多个类的时候,其属性的寻找的方法有两种,分别是深度优先和广度优先. 如下的结构,新式类和经典类的属性查找顺序都一致.顺序为D--- ...
- 【Kotlin】Kotlin 类的继承 三 ( super 关键字使用 | super@ 外部调用父类方法 | 子类选择性调用 父类 / 接口 方法 super )
文章目录 I . 子类调用父类总结 II . 子类调用父类方法 ( super ) III . 子类内部类调用父类方法 ( super@ ) IV . 子类选择调用不同的 父类 / 接口方法 ( su ...
- Day19:继承实现的原理、子类中调用父类的方法、封装
一.继承实现的原来 1.继承顺序 Python的类可以继承多个类.继承多个类的时候,其属性的寻找的方法有两种,分别是深度优先和广度优先. 如下的结构,新式类和经典类的属性查找顺序都一致.顺序为D--- ...
- qt 子类调用父类的函数_子类中调用父类的方法
父类名 . __init__(self, ...) 可以将父类中的init中的属性重复调用,减少代码的重复 class Vehicle: def __init__(self, name, speed, ...
- 安卓在子类中调用父类的方法
非常抱歉,可能是我表述不够清楚.在实际开发中,调用 getParentActivity() 方法需要在子界面中获取到父界面的实例.可以通过以下几种方式来获取父界面实例: 在子界面创建时保存父界面实例 ...
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
Python 在子类中调用父类方法详解(单继承.多层继承.多重继承) by:授客 QQ:1033553122 测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...
- Python在子类中调用父类方法
1.在子类中调用父类方法 super().方法名() 类名.方法名(self) spuer(要从哪一个类的上一级类开始查找, self).方法名() 子类调用父类方法时,一般都是想对父类方法进行扩展 ...
- python方法调用名字不一样_python中调用父类同名方法
知识回顾: 上节我们学习了类的构造方法. Python中构建构造方法主要使用__init__魔法方法. 实际项目操作中,由于类的继承导致可能覆盖同名的构造方法,导致只能使用子类的构造,而无法调用父类的 ...
- c++ 子类对象调用父类的方法
第一种方式就是子类重写父类的方法,在子类中定义和父类同样的方法,方法体中调用父类的方法 父类代码 #pragma once #include "CClientSocket.h" c ...
最新文章
- 26岁创造UNIX,退休后却成为一名飞行员,这位编程界大佬不走寻常路
- CVT1100 错误的修复 2009-10-12 11:38
- 什么是Servlet?
- QML for Android 实现二维码扫描(QZXing)
- 计算机d盘无法格式化,电脑D盘无法格式化怎么办 D盘无法格式化问题解决办法...
- arduino读取matlab串口,Matlab Arduino实时串行通信,采样0.004 s
- c语言数组中两元素交换,如可交换两个数组中的元素?
- spring(4)面向切面的Spring(AOP)
- tomcat7.0支持什么版本的jdk_恭喜你喜提JDK,那你知道JDK是什么吗?先来看看吧
- 【PostgreSQL-9.6.3】psql常用命令
- BZOJ 4033: [HAOI2015]树上染色
- 【sklearn第二十三讲】异常检测
- Android Architecture Blueprints----安卓架构详细分析
- Linux 完全卸载 MySQL
- 2021年小目标检测最新研究综述
- 圆弧周长公式_扇形面积和周长计算公式 【关于扇形的所有公式(周长、弧长、半径、圆心角)写得清楚、详细......
- 电子计算机的诞生与发展
- VR全景视频、图片播放器
- os.getcwd()函数的用法
- 服务器ae是什么位置,ae 渲染服务器
热门文章
- 剑指Offer:面试题33——把数组排成最小的数(java实现)(未完待续)
- Linux按键驱动,中断实现流程
- DataGridView 编程
- 北京、深圳 | 百度视觉算法研发实习生 人脸活体方向
- 时隔一年,盘点CVPR 2019影响力最大的20篇论文
- 科技部发文:破除“唯论文”不良导向!网友:靠水论文拿奖励的人不开心了...
- 单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读
- Python中的reshape()
- redis java连接出错_redis连接错误与spring boot
- python字符串(连载二)|字符串内置函数原来还可以这么玩!