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