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

class vehichle:#定义一个交通工具的类
Country="China"
def __init__(self,name,speed,load,power):
self.name=name
self.speed=speed
self.load=load
self.power=power
def run(self):
print("开动啦")
class Subway(vehichle):#定义一个地铁,继承父类vehichle
# pass#如果自己没有init,Subway会继承父类的init方法
def __init__(self,name,speed,load,power,line):
self.name=name
self.speed=speed
self.load=load
self.power=power
self.line=line
def 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=name
self.speed=speed
self.load=load
self.power=power
def 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=line
def 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=name
self.speed=speed
self.load=load
self.power=power
def 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=line
def 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=name
self.speed=speed
self.load=load
self.power=power
def 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)#调用父类的init
self.line=line
def show_info(self):
print(self.name,self.speed,self.load,self.line)
def run(self):
# vehichle.run(self)
super().run()#调用父类的run
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/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=name
self.speed=speed
self.load=load
self.power=power
def 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)#调用父类的init
super(Subway,self).__init__(name,speed,load,power)#调用父类的init
self.line=line
def show_info(self):
print(self.name,self.speed,self.load,self.line)
def run(self):
# vehichle.run(self)
# super().run()#调用父类的run
super(Subway,self).run() # 调用父类的run
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/super方法的使用.py 北京地铁 10km/s 10000人 13号线 开动啦 父类的开动啦 北京地铁 13号线 开动啦

在子类中调用父类的方法super的更多相关文章

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

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

  2. python基础----继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法

    一.什么是继承                                                                          继承是一种创建新的类的方式,在pyth ...

  3. python基础之类的继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法

    一.什么是继承 继承是一种创建新的类的方式,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. 派生:子类继承了父类的属性,然后衍生出自己新的属性,如果子类衍生出的新 ...

  4. python学习-65 继承2-子类中调用父类的方法

    子类中调用父类的方法 1.子类继承了父类的方法,然后想进行修改,那么就需要在子类中调用父类的方法. 2.方法一:父类名 class School: Country = 'china' def __in ...

  5. 子类中执行父类的方法(引出super()与mro列表)

    1. 我们先想一下在python中如果子类方法中想执行父类的方法,有什么方式?大概有三种: Parent.__init__(self, name) # 通过父类的名字,指定调用父类的方法 super( ...

  6. c++与java中子类中调用父类成员的方法

    java中: import java.util.Scanner; public class ClassTest{ public static void main(String args[]){ chi ...

  7. c++虚函数、子类中调用父类方法

    全部 代码: 1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include< ...

  8. python cookbook第三版学习笔记十一:类和对象(二)调用父类的方法

    在子类中调用父类的方法,可以下面的A.spam(self)的方法. class A(object):     def spam(self):         print 'A.spam' class ...

  9. 【Python】Python中子类怎样调用父类方法

    python中类的初始化方法是__init__(),因此父类子类的初始化方法都是这个,如果子类不实现这个函数,初始化时调用父类的初始化函数,如果子类实现这个函数,就覆盖了父类的这个函数,既然继承父类, ...

随机推荐

  1. 12.16 Daily Scrum

      Today's Task Tomorrow's Task 丁辛 实现和菜谱相关的餐厅列表. 实现和菜谱相关的餐厅列表.             邓亚梅             美化搜索框UI. 美 ...

  2. 《Linux内核设计与实现》第十八章读书笔记

    1.内核中的bug 内核中的bug表现得不像用户级程序中那么清晰——因为内核.用户以及硬件之间的交互会很微妙: 从隐藏在源代码中的错误到展现在目击者面前的bug,往往是经历一系列连锁反应的事件才可能触 ...

  3. Beta版会议总结

    开会时间:2015年06月12日 开会地点:基教601 开会人员:李想,王颖瑞,朱少辉,陈晨,侯涛亮. 开会内容:对于6月10日,大一同学的投票情况进行讨论和反思. 讨论结果如下: 一.目前存在的问题 ...

  4. 结对项目junit测试用例

    题目:我们假设我们要写一个整数除法的类,并且给他写测试用例. 结对分工:滕娟负责写代码,搜集资料,整理,潘广玫负责进行测试,处理测试结果 github地址链接: https://github.com/ ...

  5. GIthub地址

    https://github.com/cuibaoxue/Text1

  6. PhantomJS - Scriptable Headless Browser

    http://phantomjs.org/ PhantomJS is an optimal solution for: Page automation Access webpages and extr ...

  7. MYSQL使用中字符编码一坑

    AJAX提交的字符出错,还以为是AJAX配置的错误呢!幸亏检查了一下MYSQL连接的字符集,发现开发库与本地库配置的字符集是也不一样的.

  8. Oracle 和 SQLSERVER 重新获取统计信息的方法

    1. Oracle 重新获取统计信息的命令 exec dbms_stats.gather_schema_stats(ownname =>) # 需要修改 ownername options 指定 ...

  9. Spring 入门知识点笔记整理

    一.Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Sprin ...

  10. C1考试科目一知识总结

    第二 交通信号 交通信号灯 机动车信号灯(红灯停,路灯走,黄灯等) 车道信号灯(绿色箭头表示该车道通行,红色箭头和红叉表示该车道禁止通行) 方向指示信号灯(红色箭头表示该方向禁止通行,绿色箭头表示该方 ...