日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

pythonsuper多重继承_Python super()函数使用及多重继承

發(fā)布時間:2024/7/23 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pythonsuper多重继承_Python super()函数使用及多重继承 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

super()函數(shù)可以用于繼承父類的方法,語法如下:

super(type[, object-or-type])

雖然super()函數(shù)的使用比較簡單,但是需要根據(jù)單繼承和多繼承來分析函數(shù)的調(diào)用關(guān)系。

首先,當類之間的繼承關(guān)系為單繼承時,函數(shù)調(diào)用關(guān)系也比較簡單,可以參考如下的例子:

#!/usr/bin/env python3

class A(object):

def __init__(self):

print('class A')

class B(A):

def __init__(self):

super(B, self).__init__()

print('class B')

b = B()

上述代碼運行結(jié)果如下:

class A

class B

從結(jié)果可以看出,子類B在實例化時調(diào)用了父類A的__init__()方法。

當進行多重繼承時,需要考慮MRO的問題。所謂MRO,即Method Resolution Order,自Python2.3以來,MRO采用廣度優(yōu)先(區(qū)別于深度優(yōu)先)的規(guī)則定義。為了更好的理解這個問題,讓我們先來看如下的代碼:

#!/usr/bin/env python3

class A(object):

def __init__(self):

self.n = 10

def minus(self, m):

print('minus in class A start')

self.n -= m

print('minus in class A end')

class B(A):

def __init__(self):

self.n = 7

def minus(self, m):

print('minus in class B start')

super(B, self).minus(m)

self.n -= 2

print('minus in class B end')

class C(A):

def __init__(self):

self.n = 12

def minus(self, m):

print('minus in class C start')

super(C, self).minus(m)

self.n -= 5

print('minus in class C end')

class D(B,C):

def __init__(self):

self.n = 15

def minus(self, m):

print('minus in class D start')

super(D, self).minus(m)

self.n -= 2

print('minus in class D end')

print('The MRO of class D is :')

print(D.__mro__)

d = D()

d.minus(2)

print(d.n)

代碼運行結(jié)果:

The MRO of class D is :

(, , , , )

minus in class D start

minus in class B start

minus in class C start

minus in class A start

minus in class A end

minus in class C end

minus in class B end

minus in class D end

4

從運行結(jié)果可以看出,子類D的MRO為(, , , , ),也就是子類D的minus函數(shù)在調(diào)用父類函數(shù)時的調(diào)用順序依次為BCA,而后續(xù)的調(diào)試打印信息也正好驗證了該順序。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結(jié)

以上是生活随笔為你收集整理的pythonsuper多重继承_Python super()函数使用及多重继承的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。