欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python多繼承原理與用法示例

 更新時(shí)間:2018年08月23日 12:04:46   作者:Vito.K  
這篇文章主要介紹了Python多繼承原理與用法,簡(jiǎn)單描述了Python多繼承的相關(guān)概念、原理并結(jié)合實(shí)例形式分析了Python多繼承的具體定義、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python多繼承原理與用法。分享給大家供大家參考,具體如下:

python中使用多繼承,會(huì)涉及到查找順序(MRO)、重復(fù)調(diào)用(鉆石繼承,也叫菱形繼承問題)等

MRO

MRO即method resolution order,用于判斷子類調(diào)用的屬性來(lái)自于哪個(gè)父類。在Python2.3之前,MRO是基于深度優(yōu)先算法的,自2.3開始使用C3算法,定義類時(shí)需要繼承object,這樣的類稱為新式類,否則為舊式類

從圖中可以看出,舊式類查找屬性時(shí)是深度優(yōu)先搜索,新式類則是廣度優(yōu)先搜索

C3算法最早被提出是用于Lisp的,應(yīng)用在Python中是為了解決原來(lái)基于深度優(yōu)先搜索算法不滿足本地優(yōu)先級(jí),和單調(diào)性的問題。

本地優(yōu)先級(jí):指聲明時(shí)父類的順序,比如C(A,B),如果訪問C類對(duì)象屬性時(shí),應(yīng)該根據(jù)聲明順序,優(yōu)先查找A類,然后再查找B類。

單調(diào)性:如果在C的解析順序中,A排在B的前面,那么在C的所有子類里,也必須滿足這個(gè)順序

示例

看下面的例子

# -*- coding:utf-8 -*-
#!python2
class X(object):
  def f(self):
    print 'x'
class A(X):
  def f(self):
    print 'a'
def extral(self):
    print 'extral a'
class B(X):
  def f(self):
    print 'b'
  def extral(self):
    print 'extral b'
class C(A, B, X):
  def f(self):
    super(C, self).f()
    print 'c'
print C.mro()
c = C()
c.f()
c.extral()

根據(jù)廣度搜索原則最先搜索到A,所以結(jié)果很明顯,如下所示

[<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class '__main__.X'>, <type 'object'>]
a
c
extral b

類C沒有extral函數(shù),調(diào)用的是子類的該函數(shù)。這種類的部分行為由父類來(lái)提供的行為,叫做抽象超類.

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Pandas讀寫CSV文件的方法示例

    Pandas讀寫CSV文件的方法示例

    這篇文章主要介紹了Pandas讀寫CSV文件的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Python解析m3u8拼接下載mp4視頻文件的示例代碼

    Python解析m3u8拼接下載mp4視頻文件的示例代碼

    這篇文章主要介紹了Python解析m3u8拼接下載mp4視頻文件的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 淺談PyTorch中in-place operation的含義

    淺談PyTorch中in-place operation的含義

    這篇文章主要介紹了淺談PyTorch中in-place operation的含義,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-06-06
  • 利用Python如何生成隨機(jī)密碼

    利用Python如何生成隨機(jī)密碼

    這篇文章主要為大家詳細(xì)介紹了利用Python如何生成隨機(jī)密碼的相關(guān)方法,感興趣的小伙伴們可以參考一下
    2016-04-04
  • python 讀寫中文json的實(shí)例詳解

    python 讀寫中文json的實(shí)例詳解

    這篇文章主要介紹了 python 讀寫中文json的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握這樣的內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • Windows上使用Python增加或刪除權(quán)限的方法

    Windows上使用Python增加或刪除權(quán)限的方法

    下面小編就為大家分享一篇Windows上使用Python增加或刪除權(quán)限的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-04-04
  • 答題輔助python代碼實(shí)現(xiàn)

    答題輔助python代碼實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了答題輔助python代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python如何爬取動(dòng)態(tài)網(wǎng)站

    python如何爬取動(dòng)態(tài)網(wǎng)站

    在本篇內(nèi)容里小編給各位分享了關(guān)于python如何爬取動(dòng)態(tài)網(wǎng)站的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以參考下。
    2020-09-09
  • Python開發(fā)之快速搭建自動(dòng)回復(fù)微信公眾號(hào)功能

    Python開發(fā)之快速搭建自動(dòng)回復(fù)微信公眾號(hào)功能

    這篇文章主要介紹了Python開發(fā)之快速搭建自動(dòng)回復(fù)微信公眾號(hào)功能的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • Python編程實(shí)現(xiàn)及時(shí)獲取新郵件的方法示例

    Python編程實(shí)現(xiàn)及時(shí)獲取新郵件的方法示例

    這篇文章主要介紹了Python編程實(shí)現(xiàn)及時(shí)獲取新郵件的方法,涉及Python實(shí)時(shí)查詢郵箱及郵件獲取相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08

最新評(píng)論