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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM