#super 调用这个函数时,将当前类和当前实例作为参数
#对其返回的对象调用方法时,调用的是超类(例如之前的Bird)而不是当前类
#所以在SongBird的构造函数中,可以使用super(SongBird,self)
#在python3中,super可不提供任何参数
class Bird :
def __init__(self) :
self.hungry=True
def eat(self) :
if self.hungry==True :
print("开始吃东西")
self.hungry=False
else :
print("吃过了不饿")
class SingBird(Bird) :
def __init__(self) :
super().__init__()
self.sound="嘤嘤嘤"
def sing(self) :
print(self.sound)
a=SingBird()
a.sing()#嘤嘤嘤
a.eat()#开始吃东西
a.eat()#吃过了不饿
#即便有多个超类,也只需调用super一次,条件是所有超类的构造函数也使用super