python使用super()呼叫父類的方法
阿新 • • 發佈:2018-12-09
如果要在子類中引用父類的方法,但是又需要新增一些子類所特有的內容,可通過類名.方法()和super()來呼叫父類的方法,再個性化子類的對應函式。
直接使用類名.方法()來呼叫時,還是需要傳入self為第一個引數,而使用super()呼叫則python自動將self傳入,因此使用super()比較簡潔。
如下animal基類和cat子類,cat類的__init__( )建構函式比父類多一個leg引數,eat()函式比父類多一行輸出,通過super()呼叫父類的函式,則不需要將重複的部分再寫一遍。
使用super()呼叫父類函式的好處:
1.簡化程式碼
2.如果父類名稱修改,對其他呼叫父類函式的類來說也沒有影響,而如果直接使用父類的名稱來呼叫,父類名稱修改會影響其他所有的類。
class animal: def __init__(self,name,sex,leg): self.name = name self.sex = sex self.leg = leg def eat(self,food): print('%s likes to eat %s'%(self.name,food)) class cat(animal): #cat類繼承animal類 def __init__(self,name,sex,leg,tail): #定義初始化建構函式,但是比父類多一個引數#animal.__init__(self,name,sex,leg) super().__init__(name,sex,leg) #呼叫父類的初始化建構函式 self.tail=tail print('cat has %s legs,and %s tail'%(self.leg,self.tail)) def eat(self,food): #定義eat函式,但是增加一行輸出 #animal.eat(self,food) super().eat(food) #呼叫父類的方法 print('%s also likes to eat %s' % (self.name, food)) cat1=cat('cat1','male',4,1) cat1.eat('mouse') # 輸出如下: # cat has 4 legs,and 1 tail # cat1 likes to eat mouse # cat1 also likes to eat mouse