super的使用詳解-Python

super主要用來調用父類方法,顯式調用父類,在子類中,一般會定義與父類相同的屬性(數據屬性,方法),從而來實現子類特有的行爲。也就是說,子類會繼承父類的所有的屬性和方法,子類也可以覆蓋父類同名的屬性和方法。

class Parent(object):
    Value = "Hi, Parent value"
    def fun(self):
        print("This is from Parent")
#定義子類,繼承父類               
class Child(Parent):
    Value = "Hi, Child  value"
    def ffun(self):
        print("This is from Child")

c = Child()    
c.fun()
c.ffun()
print(Child.Value)

輸出結果:

This is from Parent
This is from Child
Hi, Child value

但是,有時候可能需要在子類中訪問父類的一些屬性,可以通過父類名直接訪問父類的屬性,當調用父類的方法時,需要將”self”顯示的傳遞進去的方式:

class Parent(object):
    Value = "Hi, Parent value"
    def fun(self):
        print("This is from Parent")

class Child(Parent):
    Value = "Hi, Child  value"
    def fun(self):
        print("This is from Child")
        Parent.fun(self)   #調用父類Parent的fun函數方法

c = Child()    
c.fun()

   輸出結果:

This is from Child
This is from Parent  #實例化子類Child的fun函數時,首先會打印上條的語句,再次調用父類的fun函數方法

這種方式有一個不好的地方就是,需要經父類名硬編碼到子類中,爲了解決這個問題,可以使用Python中的super關鍵字:

class Parent(object):
    Value = "Hi, Parent value"
    def fun(self):
        print("This is from Parent")

class Child(Parent):
    Value = "Hi, Child  value"
    def fun(self):
        print("This is from Child")
        #Parent.fun(self)
        super(Child,self).fun()  #相當於用super的方法與上一調用父類的語句置換

c = Child()    
c.fun()

輸出結果:

This is from Child
This is from Parent  #實例化子類Child的fun函數時,首先會打印上條的語句,再次調用父類的fun函數方法

參考 :https://blog.csdn.net/brucewong0516/article/details/79121179

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章