知识回顾:
上节我们学习了类的构造方法。
Python中构建构造方法主要使用__init__魔法方法。
实际项目操作中,由于类的继承导致可能覆盖同名的构造方法,导致只能使用子类的构造,而无法调用父类的构造方法。但其实可以采用super方法解决这个问题,今天的课程就是用来解决这个问题的。
本节知识视频教程 https://v.qq.com/x/page/y0911dr4dr1.html
文字讲解开始:
一、super函数
super()这个方法可以用来解决子类中调用父类同名构造方法。
Python版本过渡,在2.x版本中往往写成super(所在类的类名,self)这种形式,而在3.x版本开始后,就直接可以简写为super()来直接调用父类中的构造方法。
通过实际测试,我们知道:
1. super方法可以用在类中的任意的函数中,去调用父类中的方法。
2. super方法也可以调用超类中的方法。
二、超类知识
Student类是person类的子类,RunStudent是student类的子类,那么我们可以称runstudent类是person类的超类。
三、总结强调
1.掌握super方法在两种不同的Python版本中的不同的写法。
2.掌握super方法可以调用类和超类中的所有的同名方法。
3.掌握super方法调用类中同名函数时的方法调用顺序,默认是优先调用父类中的同名方法。
本节源代码:
class Person:
def __init__(self):
print("出生时会啼哭面向世界!")
def say(self):
print("我是Person")
def walk(self):
print("初始化人的走路功能")
class Student(Person):
def __init__(self,name):
super().__init__()
self.name=name
def getName(self):
return self.name
def say(self):
super(Student,self).say()
print("我是中国学生")
def walk(self):
print("我是student的walk")
class RunStudent(Student):
def walk(self):
super().walk()
print("我可以快走啦!")
stu=Student("老刘")
print(stu.getName())
stu.say()
#调用父类的父类中的方法
runStu=RunStudent("刘金玉编程")
runStu.walk()