super() 是pyhton 中调用父类(超类)的一种方法,在子类中可以通过super()方法来调用父类的方法:
超类: 是指 2层以上的继承关系,假如 C类继承B类,B类由继承A类,那么A类就是C类的超类~
1 通过super() 来调用父类的__init__ 构造方法:
class Person(): def __init__(self): print('我是Peson的__init__构造方法') class Student(Person): def __init__(self): super().__init__() print('我是Student的__init__构造方法') stu = Student() ----------------------------------------- 我是Peson的__init__构造方法 我是Student的__init__构造方法
2 通过supper() 来调用与子类同名的父类方法
class Person(): def say(self): print('我是Peson的say方法') class Student(Person): def say(self): super().say() print('我是Student的的say方法') stu = Student() stu.say() ----------------------------------------- '我是Peson的say方法' '我是Student的的say方法'
3 通过super()调用超类的同名方法
class Person(): def say(self): print('我是Peson的say方法') class Student(Person): def __init__(self): print('我是Student的__init__构造方法') class Xiaoming(Student): def say(self): super().say() print('我是Xiaoming的say方法') Xiao= Xiaoming() Xiao.say() ------------------------------------ '我是Student的__init__构造方法' '我是Peson的say方法' 我是Xiaoming的say方法 注意:因为Xiaoming 没有__init__ 构造方法,实例化的时候会执行父类Student的__init__构造方法,所以先打印我是Student的__init__构造方法.super().say()因为Xiaoming 的父类Student 没有say()方法,就执行了其超类Person的say()方法,如果Student 有say方法则执行Student的say 方法 比如: class Person(): def say(self): print('我是Peson的say方法') class Student(Person): def __init__(self): print('我是Student的__init__构造方法') def say(self): print('我是Student的say方法') class Xiaoming(Student): def say(self): super().say() print('我是Xiaoming的say方法') Xiao= Xiaoming() Xiao.say() -------------------------- '我是Student的__init__构造方法' '我是Student的say方法' 我是Xiaoming的say方法