super 呼叫父類方法

2021-10-05 23:04:22 字數 1013 閱讀 8297

詳解python的super()的作用和原理:

python 中物件的定義很怪異,第乙個引數一般都命名為self,

用於傳遞物件本本身,而在呼叫的時候則不必顯示傳遞,系統會自動傳遞

今天我們介紹的主角是super(),在類的繼承裡面super()非常常用,

它解決了子類呼叫父類方法的一些問題,父類多次被呼叫只執行一次。

當存在繼承關係的時候,有時候需要在子類中呼叫父類的方法

此時最簡單的方法是把物件呼叫轉換成類呼叫,需要注意的是這時

self引數需要顯示傳遞

class fooparent:

def bar(self, message):

print(message)

class foochild(fooparent):

def bar(self, message):

fooparent.bar(self, message)

print foochild().bar("hello, python.")

這樣做有一些缺點,比如說如果修改了父類名稱,那麼在子類中會涉及多處修改,

另外,python是允許多繼承的語言,如上所示的方法在多繼承時就需要重複寫多次,

顯得累贅。為了解決這些問題,python引入了super()機制,例子**如下:

node2:/root/python/object#cat t2.py

class fooparent:

def bar(self, message):

print(message)

class foochild(fooparent):

def bar(self, message):

super(foochild, self).bar(message)

foochild().bar("hello, python.")

node2:/root/python/object#python3 t2.py

hello, python.

Python呼叫父類方法之super()

super 方法的語法 super type object or type super 是用來解決多重繼承問題的,直接用類名呼叫父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查詢順序 mro 重複呼叫 鑽石繼承 等種種問題。在super方法中包含了cj演算法 確保每個類被呼叫一次 具...

super關鍵字呼叫 「父類無參」 方法

1 子類繼承父類時,子類構造方法第一行系統會自動預設編寫super 在呼叫子類的構造方法時,先呼叫父類的無引數構造方法。2 如果父類中沒有 無引數的構造方法,那子類繼承父類時就會報錯,因子類的構造方法在預設呼叫父類無引數構造方法super 不存在。這時我們解決方式是 通過手動在子類中編寫呼叫父類有引...

重寫父類方法和呼叫父類方法

class animal object def eat self print 吃 def drink self print 喝 class dog animal def bark self print 汪汪叫 print 汪汪叫 print 汪汪叫 print 汪汪叫 print 汪汪叫 class...