Python super 函式簡介

2021-08-20 12:19:30 字數 2020 閱讀 4653

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')

print

(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...