python继承的时候,要重写父类构造函数的原因


class Bird:
def __init__(self):
self.hungry = True
def eat(self):
if self.hungry:
print('我饿了')
else:
print('不饿,谢谢')
class SongBird(Bird):
def __init__(self):
self.sound = 'Aaaaaaaae'
def sing(self):
print(self.sound)
if __name__ == '__main__':
sb = SongBird()
sb.sing()
sb.eat()

在子类继承的时候,构造函数被重写,但是重写的时候没有任何初始化父类属性hungry的代码。这样就导致了错误发生
如果为了达到目的,需要调用父类的构造函数来保证基本的初始化。
而在子类中调用父类构造函数方法:
如果父类中的构造函数为:__init__
(self, student_name, student_age)
那么子类中如下:
1、直接使用父类调用父类构造函数:class.__init__(self)--->Person.__init__(self, student_name, student_age)
2、使用super() ---->
super(Student, self).__init__(student_name, student_age)
        
---->super().__init__(student_name, student_age)

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM