1. 程式人生 > >python使用super()呼叫父類的方法

python使用super()呼叫父類的方法

如果要在子類中引用父類的方法,但是又需要新增一些子類所特有的內容,可通過類名.方法()和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