python 內建函式
描述
super()
函式是用於呼叫父類(超類)的乙個方法。
super 是用來解決多重繼承問題的,直接用類名呼叫父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查詢順序(mro)、重複呼叫(鑽石繼承)等種種問題。
mro 就是類的方法解析順序表, 其實也就是繼承父類方法時的順序表。
語法
以下是 super() 方法的語法:
super
(type
[,object-or
-type
])引數
python3.x 和 python2.x 的乙個區別是: python 3 可以使用直接使用
super().***
代替 super(class, self).***
:python3.x 例項:
classa:
passclassb(
a):defadd
(self,x
):super
().add(x
)python2.x 例項:
classa(
object
):# python2.x 記得繼承 object
passclassb(
a):defadd
(self,x
):super(b
,self
).add(x
)返回值
無。例項
以下展示了使用 super 函式的例項:
#!/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),然後把類b的物件 foochild 轉換為類 fooparent 的物件
super
(foochild
,self).
__init__
()print('
child')
def
bar(
self
,message):
super
(foochild
, self).
bar(
message
)print('
child bar fuction')
(self
.parent)i
f __name__
== '
__main__':
foochild
= foochild
()foochild
.bar('
helloworld')
執行結果:
parent
child
hello world
from
parent
child
bar fuction
i'm the parent
pythonsuper 函式的詳解
目錄 python是一門物件導向的語言,定義類時經常要用到繼承,在類的繼承中,子類繼承父類中已經封裝好的方法,不需要再次編寫,如果子類如果重新定義了父類的某一方法,那麼該方法就會覆蓋父類的同名方法,但是有時我們希望子類保持父類方法的基礎上進行擴充套件,而不是直接覆蓋,就需要先呼叫父類的方法,然後再進...
Python super 函式用法總結
了解 super 函式之前,我們首先要知道 super 的用途是啥?語法格式 super type object or type 函式描述 返回乙個 物件,它會將方法呼叫委託給 type 的父類或兄弟類。引數說明 type 類,可選引數。object or type 物件或類,一般是 self,可選...
python super函式使用方法詳解
python內建函式super 主要用於類的多繼承中,用來查詢並呼叫父類的方法,所以在單重繼承中用不用 super 都沒關係 但是,使用 super 是乙個好的習慣。一般我們在子類中需要呼叫父類的方法時才會這麼用 super type,object or type 引數 type 類,一般是類名 o...