python之super 函式使用

2021-10-02 17:37:00 字數 1242 閱讀 3334

super() 函式用於呼叫父類(超類)的乙個方法。

super 是用來解決多重繼承問題的,直接用類名呼叫父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查詢順序(mro)、重複呼叫(鑽石繼承)等種種問題。

示例**:

#!/usr/bin/python

# -*- coding: utf-8 -*-

class

fooparent

(object):

def__init__

(self)

: self.parent =

'i\'m the parent.'

print

('parent'

)def

bar(self,message)

:print

("%s from parent"

% message)

class

foochild

(fooparent)

:def

__init__

(self)

:# super(foochild,self) 首先找到 foochild 的父類(就是類 fooparent),然後把類 foochild 的物件轉換為類 fooparent 的物件

super

(foochild,self)

.__init__(

)print

('child'

)def

bar(self,message)

:# 首先呼叫 foochild 的父類(就是類 fooparent),然後呼叫父類的 bar 方法

super

(foochild, self)

.bar(message)

print

('child bar fuction'

)print

(self.parent)

if __name__ ==

'__main__'

: foochild = foochild(

) foochild.bar(

'helloworld'

)

輸出結果:

parent

child

helloworld from parent

child bar fuction

i'm the parent.

python教程(九)之特性(3 函式super)

super 呼叫這個函式時,將當前類和當前例項作為引數 對其返回的物件呼叫方法時,呼叫的是超類 例如之前的bird 而不是當前類 所以在songbird的建構函式中,可以使用super songbird,self 在python3中,super可不提供任何引數 class bird def init...

python中的super 函式

最能感受到super函式的作用在於進行鑽石繼承的時候。鑽石繼承 由乙個基類衍生兩個及以上的超類,然後在衍生,在類樹的最底層生成乙個子類,這樣的類樹結構就是乙個類似 鑽石外形,所以,最底層類繼承稱為鑽石繼承 首先 這是直接通過超類呼叫方法給子類使用 class baseclass num base c...

python繼承與super 函式

super 在使用時至少傳遞乙個引數,且這個引數必須是乙個類。通過super 獲取到的是乙個 物件,通過這個物件去查詢父類或者兄弟類的方法。class base def init self print base.init class a base def init self super init p...