Python3深入理解super 函式

2021-10-03 13:58:37 字數 2772 閱讀 1803

深入理解super()函式在類的繼承中,如果重定義某個方法,該方法會覆蓋父類的同名方法,但有時,我們希望能同時實現父類的功能,這時,我們就需要呼叫父類的方法了,可通過使用super()函式來實現。

super

(type[,

object-or

-type

])

引數:

classa:

def__init__

(self)

:print

("a"

)class

b(a)

:def

__init__

(self)

:print

("b"

)super()

.__init__(

)# 呼叫父類

if __name__ ==

'__main__'

: b = b(

)

輸出結果:

b

a # super呼叫父類輸出 a

class

animal

:# 建立動物類

"""動物類"""

def__init__

(self, name)

:# 初始化方法

self.name = name

defeat(self)

:# 定義吃食物方法

print

('%s正在吃食物'

% self.name)

defplay

(self)

:# 定義玩耍方法

print

('%s正在玩'

% self.name)

defsleep

(self)

:# 定義休息方法

print

('%s正在休息'

% self.name)

class

dog(animal)

:"""狗類"""

def__init__

(self, name)

:super()

.__init__(name)

# 定義基類的初始化方法

print

('這是乙隻%s'

% self.name)

defeat

(self)

:# 定義狗吃食物的方法

print

('%s正在吃**'

% self.name)

defbark

(self)

:# 定義狗叫的方法

print

('%s會汪汪叫'

% self.name)

dog = dog(

'哈士奇'

)# 建立動物類的例項

dog.eat(

)# 呼叫吃食物的方法

dog.play(

)# 呼叫玩耍的方法

dog.bark(

)# 呼叫狗叫的方法

輸出結果:

這是乙隻哈士奇

哈士奇正在吃**

哈士奇正在玩

哈士奇會汪汪叫

根據執行結果看出第21行**因為呼叫了super().init()方法,並傳遞了乙個name引數。在animal基類的__init__方法中,將name賦值給self.name。所以第22行**會輸出「這是乙隻哈士奇」。

class

food

:"""實物類"""

def__init__

(self, name)

:print

('%s是食物'

% name)

class

vegetables

(food)

:"""蔬菜類"""

def__init__

(self, vname)

:print

('%s是蔬菜'

% vname)

super()

.__init__(vname)

class

fruit

(food)

:"""水果類"""

def__init__

(self, fname)

:print

('%s是水果'

% fname)

super()

.__init__(fname)

class

tomato

(fruit, vegetables)

:"""西紅柿類"""

def__init__

(self)

:print

('西紅柿即是蔬菜又是水果'

)super()

.__init__(

'西紅柿'

)print

(tomato.__mro__)

# mro 列表順序

tomato = tomato(

)# 例項化西紅柿類

輸出結果:

(

>, >, >, >, >

)西紅柿即是蔬菜又是水果

西紅柿是水果

西紅柿是蔬菜

西紅柿是食物

根據執行結果可知:

python深入 Python的深入理解

處理檔案和目錄 python 3 帶有乙個模組叫做 os,代表 作業系統 operating system os 模組 包含非常多的函式用於獲取 和修改 本地目錄 檔案程序 環境變數等的資訊。python 盡最大的努力在所有支援的作業系統上提供乙個統一的api,這樣你就可以在保證程式能夠在任何的計算...

深入理解Python類

c 中,類有兩個關鍵的內建函式,建構函式和析構函式。在python中,其實也有類似的函式,他們就是 def init self pass def del self pass def enter self pass def exit self pass在物件建立時執行操作。在物件析構時執行操作。注意 ...

深入理解Python切片

python序列的切片很基礎同時也很重要,最近看到乙個 1 的表達,不明所以,查了一些資料並實際操作,對python切片有了更深刻的認識,以下結合例子詳細說明。先看下切片的基本語法,一般認為切片語法是 n m 是個半閉合區間,等效於數學上 n,m 取值範圍,取n不取m,n和m都可以省略,n看下面的例...