最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python面向?qū)ο笾^承代碼詳解

 更新時間:2018年01月29日 15:09:01   作者:世界看我我看世界  
這篇文章主要介紹了Python面向?qū)ο笾^承代碼詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文研究的主要是Python面向?qū)ο笾^承的相關(guān)內(nèi)容,具體如下。

Python 繼承

即一個派生類(derived class)繼承基類(bass class)字段和方法。繼承也允許把一個派生類的對象作為一個基類對象對待。例如,有這樣一個設(shè)計(jì),一個Cat類型的對象派生自Animal類,這是模擬”是一個(is-a)”關(guān)系(例如,Cat是一個Animal)。

繼承實(shí)現(xiàn)了代碼的重用。

繼承的基本語法:

class 派生類名(基類名1 [, 基類名2....]):

基類名寫在括號里,基本類是在類定義的時候,在元組之中指明的。如果在繼承元組中列了一個以上的類,那么它就被稱作”多重繼承” 。

多重繼承

Python支持多重繼承,也就是一個子類可以有多個父類,父類間用逗號隔開。

在多重繼承中,子類有那么多的父類,那子類實(shí)例化時,構(gòu)造方法是怎樣調(diào)用的呢?

這里需要記住一點(diǎn):

多重繼承中,構(gòu)造方法以第一個父類為中心。如果子類重新定義了構(gòu)造方法,就不會調(diào)用父類的構(gòu)造方法,構(gòu)造就會只調(diào)用第一個父類的構(gòu)造方法,并且如果父類中有同名的方法時,通過子類的實(shí)例對象去調(diào)用的該方法也是第一個父類中的方法。當(dāng)然如果你需要在子類中用來某個或某幾個父類的構(gòu)造方法,需要顯示的去調(diào)用父類的構(gòu)造方法。

在python中繼承中的一些特點(diǎn):

  1. 在繼承中基類的構(gòu)造(__init__()方法)不會被自動調(diào)用,它需要在其派生類的構(gòu)造中親自專門調(diào)用。
  2. 在調(diào)用基類的方法時,需要加上基類的類名前綴,且需要帶上self參數(shù)變量。區(qū)別于在類中調(diào)用普通函數(shù)時并不需要帶上self參數(shù)。
  3. Python總是首先查找對應(yīng)類型的方法,如果它不能在派生類中找到對應(yīng)的方法,它才開始到基類中逐個查找。(先在本類中查找調(diào)用的方法,找不到才去基類中找)。
  4. 子類只繼承父類所有公有的屬性和方法,并且也可以在子類中通過父類名來調(diào)用,而對于私有的屬性和方法,子類是不進(jìn)行繼承的,因此在子類中是無法通過父類名來訪問的。

實(shí)例:

class Parent(object): # define parent class 
 parentAttr = 100 
 def __init__(self): 
  print "Calling parent constructor" 

 def parentMethod(self): 
  print 'Calling parent method' 

 def setAttr(self, attr): 
  Parent.parentAttr = attr 

 def getAttr(self): 
  print "Parent attribute :", Parent.parentAttr

class Child1(Parent): # define child1 class 
 def __init__(self): 
  print "Calling child1 constructor" 

 def childMethod(self): 
  print 'Calling child1 method' 
  Parent.parentMethod(self) #調(diào)用基類的方法,所以要加上參數(shù)self

class Child2(Parent): # define child2 class 
 def childMethod(self): 
  print 'Calling child2 method' 
  self.parentMethod() #子類調(diào)用自己從父類那繼承過來的父類的方法

c1 = Child1() # 實(shí)例化子類 1
c2 = Child2() # 實(shí)例化子類 2
c1.childMethod() # 調(diào)用子類的方法 
c2.childMethod() # 調(diào)用子類的方法 
c1.parentMethod() # 調(diào)用父類方法 
c1.setAttr(200) # 再次調(diào)用父類的方法 
c1.getAttr() # 再次調(diào)用父類的方法

執(zhí)行結(jié)果:

Calling child1 constructor
Calling parent constructor
Calling child1 method
Calling parent method
Calling child2 method
Calling parent method
Calling parent method
Parent attribute : 200

解析:

c1 = Child1() # 實(shí)例化子類 1
c2 = Child2() # 實(shí)例化子類 2

這兩句是創(chuàng)建Child1類和Child2類的實(shí)例對象,創(chuàng)建實(shí)例對象時,就會自動去調(diào)類的構(gòu)造方法,如果子類中沒有建立自己的構(gòu)造方法,就會調(diào)用父類的構(gòu)造方法,所以打印結(jié)果為:

Calling child1 constructor
Calling parent constructor

c1.childMethod() # 調(diào)用子類的方法
c2.childMethod() # 調(diào)用子類的方法

上面兩句分別調(diào)用的是對應(yīng)子類的子類方法,由于在子類中都分別有調(diào)用父類的方法,所以打印結(jié)果為:

Calling child1 method
Calling parent method
Calling child2 method
Calling parent method

注意:

子類繼承父類以后,如果在子類在對父類的方法進(jìn)行改造時,由需要用到父類的方法時,這個時候在子類中想要調(diào)用父類的方法時,該怎么做呢?有兩種方法:

  1. Parent.parentMethod(self)
  2. self.parentMethod()

第一種是直接用父類的類名.方法名去調(diào)用父類的方法,但是需要注意的時,這種調(diào)用方法必須將self作為參數(shù)傳進(jìn)去并且作為第一個參數(shù),表示指向指向這個類的實(shí)例本身。

第二種是直接用self去調(diào)用父類的方法,為什么可以這樣調(diào)用呢?因?yàn)橐坏┳宇惱^承了父類,那么子類就擁有父類所有的方法和屬性,所以此時父類的方法和屬性就相當(dāng)于子類自己了,所以可以直接用self去直接調(diào)用實(shí)例的方法,而不用再傳入self參數(shù)了。

使用issubclass()或者isinstance()方法來檢測類之間的關(guān)系:

  1. issubclass() - 布爾函數(shù)判斷一個類是另一個類的子類或者子孫類, 語法:issubclass(sub,sup) 。
  2. isinstance(obj, Class) 布爾函數(shù)如果obj是Class類的實(shí)例對象或者是一個Class子類的實(shí)例對象則返回true。

總結(jié)

以上就是本文關(guān)于Python面向?qū)ο笾^承代碼詳解的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • Python編程itertools模塊處理可迭代集合相關(guān)函數(shù)

    Python編程itertools模塊處理可迭代集合相關(guān)函數(shù)

    本篇博客將為你介紹Python函數(shù)式編程itertools模塊中處理可迭代集合的相關(guān)函數(shù),有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • 使用PyCharm和venv進(jìn)行Python項(xiàng)目環(huán)境配置避坑指南

    使用PyCharm和venv進(jìn)行Python項(xiàng)目環(huán)境配置避坑指南

    在進(jìn)行 Python 項(xiàng)目開發(fā)時,一個干凈,隔離且配置正確的開發(fā)環(huán)境至關(guān)重要,本文結(jié)合之前安裝 Vanna 庫時遇到的問題,總結(jié)了使用 PyCharm 和 venv 進(jìn)行 Python 項(xiàng)目環(huán)境設(shè)置的最佳實(shí)踐和常見坑的解決方法,有需要的小伙伴可以參考下
    2025-04-04
  • Django實(shí)現(xiàn)靜態(tài)文件緩存到云服務(wù)的操作方法

    Django實(shí)現(xiàn)靜態(tài)文件緩存到云服務(wù)的操作方法

    這篇文章主要介紹了Django實(shí)現(xiàn)靜態(tài)文件緩存到云服務(wù)的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Python連接PostgreSQL數(shù)據(jù)庫的方法

    Python連接PostgreSQL數(shù)據(jù)庫的方法

    大家應(yīng)該都有所了解,python可以操作多種數(shù)據(jù)庫,諸如SQLite、MySql、PostgreSQL等,這里不對所有的數(shù)據(jù)庫操作方法進(jìn)行贅述,只針對目前項(xiàng)目中用到的PostgreSQL做一下簡單介紹,主要是Python連接PostgreSQL數(shù)據(jù)庫的方法。有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • python?selenium實(shí)現(xiàn)登錄豆瓣示例詳解

    python?selenium實(shí)現(xiàn)登錄豆瓣示例詳解

    大家好,本篇文章主要講的是python?selenium登錄豆瓣示例詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Python基于WebSocket實(shí)現(xiàn)簡易屏幕共享工具

    Python基于WebSocket實(shí)現(xiàn)簡易屏幕共享工具

    這篇文章主要為大家詳細(xì)介紹了Python如何基于WebSocket實(shí)現(xiàn)簡易屏幕共享工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-01-01
  • 使用Dajngo 通過代碼添加xadmin用戶和權(quán)限(組)

    使用Dajngo 通過代碼添加xadmin用戶和權(quán)限(組)

    這篇文章主要介紹了使用Dajngo 通過代碼添加xadmin用戶和權(quán)限(組),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • OpenCV 使用imread()函數(shù)讀取圖片的六種正確姿勢

    OpenCV 使用imread()函數(shù)讀取圖片的六種正確姿勢

    這篇文章主要介紹了OpenCV 使用imread()函數(shù)讀取圖片的六種正確姿勢,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • python實(shí)現(xiàn)視頻分幀效果

    python實(shí)現(xiàn)視頻分幀效果

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)視頻分幀效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 基于torch.where和布爾索引的速度比較

    基于torch.where和布爾索引的速度比較

    今天小編就為大家分享一篇基于torch.where和布爾索引的速度比較,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01

最新評論

西藏| 焉耆| 池州市| 奎屯市| 桐城市| 华坪县| 临夏市| 广宗县| 台中县| 安义县| 林口县| 清徐县| 贡山| 宣汉县| 长顺县| 开封县| 乐清市| 台湾省| 修水县| 宁安市| 阿合奇县| 敦化市| 叶城县| 上饶市| 达日县| 东源县| 双鸭山市| 准格尔旗| 广宁县| 大兴区| 北海市| 邯郸县| 阜阳市| 龙里县| 临汾市| 庆安县| 昌乐县| 洛宁县| 紫金县| 蒙自县| 定边县|