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

python使用super()調用父類的方法

構造 %s self 類函數 一個 因此 elf 名稱 code

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

python使用super()調用父類的方法