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

python SocketServer源碼深入解讀

 更新時(shí)間:2019年09月17日 14:49:06   作者:若如初見_you  
這篇文章主要介紹了python SocketServer源碼深入解讀,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

再看繼承

真正的大餐來之前,還是來點(diǎn)兒開胃菜!回顧一下關(guān)于類的繼承的知識:

我們先看上面的代碼,這是一個(gè)簡單的類繼承,我們可以看到父類Base和子類Son,它們中各有一個(gè)Testfunc方法,當(dāng)我們實(shí)例化子類的對象sonobj時(shí),可以看到初始化方法中黃色框框調(diào)用了Testfunc,那么這個(gè)時(shí)候執(zhí)行的是哪個(gè)類里面的代碼呢?我會告訴你執(zhí)行的是子類里面的方法,不信就自己試試吧,代碼在下面~

為什么呢?其實(shí)這里是繞了一個(gè)圈,所以把很多人繞暈了,包括我!后來想想其實(shí)很容易,我們看最右邊的圖:

如果這樣看,我們是不是就明白了?其實(shí)這兩段代碼表示的是一個(gè)意思,盡管Son繼承了Base類,父子類中都有同樣的方法,但是由于我們實(shí)例化了子類的對象,所以這個(gè)在初始化方法里的self.Testfunc,self指的是子類的對象,當(dāng)然也就先調(diào)用子類中的方法啦。

所以盡管在第一個(gè)例子中,初始化方法在父類執(zhí)行,但是還是改變不了它是子類對象的本質(zhì),當(dāng)我們使用self去調(diào)用Testfunc方法時(shí),始終是先調(diào)用子類的方法。我們可以這樣理解,盡管兒子繼承了父親的財(cái)產(chǎn),但是花錢的時(shí)候,還是要先花自己的~~~

#_*_coding:utf-8_*_
__author__ = 'Eva_J'
class Base(object):
  def __init__(self,name):
    self.name = name
    self.Testfunc()
  def Testfunc(self):
    print 'do Base Testfunc'
class Son(Base):
  def Testfunc(self):
    print 'do Son Testfunc'
sonobj = Son('sonobj')
inherit Code

看完剛剛的代碼,我們就知道了對象和self的真實(shí)意義,現(xiàn)在再來回憶一下關(guān)于繼承的順序問題:    

看上面的代碼,我們猜測一下,執(zhí)行之后,控制臺會打印什么呢?先揭曉答案,會打印Base2方法中的內(nèi)容,原因很簡單:盡管這三個(gè)類中都有同樣的Testfunc方法,但是,由于計(jì)算機(jī)在找方法的時(shí)候,遵循的順序是:Base2,Son,Base,所以它會先找到Base2類,而這個(gè)類中剛好有它要找的方法,它也就歡歡喜喜的拿去執(zhí)行啦!

#_*_coding:utf-8_*_
__author__ = 'Eva_J'
class Base(object):
  def Testfunc(self):
    print 'do Base Testfunc'
class Son(Base):
  def __init__(self,name):
    self.name = name
    self.Testfunc()
  def Testfunc(self):
    print 'do Son Testfunc'
class Base2(object):
  def Testfunc(self):
    print 'do Base2 Testfunc'
class GrandSon(Base2,Son):
  pass
#sonobj = Son('sonobj')
sonobj = GrandSon('sonobj')
inherit2 Code

畫個(gè)簡易類圖

剛剛我們只是寫了一個(gè)小程序,來說明類之間的繼承和對象調(diào)用方法之間的聯(lián)系,但是如果我們想要hold住一個(gè)繼承關(guān)系復(fù)雜的源碼邏輯,就需要類圖來幫忙!如果你覺得我要教你畫類圖那就大錯(cuò)特錯(cuò)了。。。懶人癥重癥患者是懶得畫那種東西的。。。嘻,先看圖!

對照類圖看源碼

根據(jù)上面的圖,我們就拿到了threadingTCPServer的相關(guān)類,并且搞清楚了它們之間的繼承關(guān)系和方法,接下來我們對照這張簡易類圖來看看代碼執(zhí)行的過程:

初始化相關(guān)過程:

執(zhí)行serve_forever的相關(guān)代碼:

就是這樣,我們一路按照調(diào)用軌跡去尋找,每次看到一個(gè)調(diào)用都先對照上面的簡易類圖,看看有沒有重名方法,如果有,就要找到最近的方法并查看里面的內(nèi)容,以此類推:按照這種方法,就會感覺所有代碼都在一個(gè)文件一樣,媽媽再也不用擔(dān)心我看不懂源碼,哈?。。‘?dāng)然啦,這種方法比較山寨,自己心里知道就好,不要告訴別人你其實(shí)是這樣看懂源碼的~~~

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

相關(guān)文章

  • Python 的內(nèi)置字符串方法小結(jié)

    Python 的內(nèi)置字符串方法小結(jié)

    本文主要給大家介紹了下Python的一些內(nèi)置字符串的方法,包括概覽,字符串大小寫轉(zhuǎn)換,字符串格式輸出,字符串搜索定位與替換,字符串的聯(lián)合與分割,字符串條件判斷,字符串編碼
    2016-03-03
  • 全面了解Python的getattr(),setattr(),delattr(),hasattr()

    全面了解Python的getattr(),setattr(),delattr(),hasattr()

    下面小編就為大家?guī)硪黄媪私釶ython的getattr(),setattr(),delattr(),hasattr()。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • 淺談keras中的batch_dot,dot方法和TensorFlow的matmul

    淺談keras中的batch_dot,dot方法和TensorFlow的matmul

    這篇文章主要介紹了淺談keras中的batch_dot,dot方法和TensorFlow的matmul,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 基于Python實(shí)現(xiàn)人臉自動戴口罩系統(tǒng)

    基于Python實(shí)現(xiàn)人臉自動戴口罩系統(tǒng)

    2019年新型冠狀病毒感染的肺炎疫情發(fā)生以來,牽動人心,舉國哀痛,口罩、酒精、消毒液奇貨可居。這篇文章主要介紹了基于Python的人臉自動戴口罩系統(tǒng),需要的朋友可以參考下
    2020-02-02
  • Python?tkinter中l(wèi)abel控件動態(tài)改變值問題

    Python?tkinter中l(wèi)abel控件動態(tài)改變值問題

    這篇文章主要介紹了Python?tkinter中l(wèi)abel控件動態(tài)改變值問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 基于python腳本實(shí)現(xiàn)軟件的注冊功能(機(jī)器碼+注冊碼機(jī)制)

    基于python腳本實(shí)現(xiàn)軟件的注冊功能(機(jī)器碼+注冊碼機(jī)制)

    用戶運(yùn)行程序后,通過文件自動檢測認(rèn)證狀態(tài),如果未經(jīng)認(rèn)證,就需要注冊。這篇文章主要介紹了基于python腳本實(shí)現(xiàn)軟件的注冊功能(機(jī)器碼+注冊碼機(jī)制)的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Python內(nèi)置函數(shù)reversed()用法分析

    Python內(nèi)置函數(shù)reversed()用法分析

    這篇文章主要介紹了Python內(nèi)置函數(shù)reversed()用法,結(jié)合實(shí)例形式分析了reversed()函數(shù)的功能及針對序列元素相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • 利用selenium 3.7和python3添加cookie模擬登陸的實(shí)現(xiàn)

    利用selenium 3.7和python3添加cookie模擬登陸的實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于利用selenium 3.7和python3添加cookie模擬登陸的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Python?selenium?webdriver?基本使用代碼分享

    Python?selenium?webdriver?基本使用代碼分享

    這篇文章主要介紹了Python?selenium?webdriver?基本使用,本文僅僅簡單介紹了selenium的使用常用代碼分享,需要的朋友可以參考下
    2022-11-11
  • 簡單談?wù)凱ython中的json與pickle

    簡單談?wù)凱ython中的json與pickle

    下面小編就為大家?guī)硪黄唵握務(wù)凱ython中的json與pickle。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07

最新評論