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

Python面向對象之繼承代碼詳解

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

本文研究的主要是Python面向對象之繼承的相關內容,具體如下。

Python 繼承

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

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

繼承的基本語法:

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

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

多重繼承

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

在多重繼承中,子類有那么多的父類,那子類實例化時,構造方法是怎樣調用的呢?

這里需要記住一點:

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

在python中繼承中的一些特點:

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

實例:

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) #調用基類的方法,所以要加上參數(shù)self

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

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

執(zhí)行結果:

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() # 實例化子類 1
c2 = Child2() # 實例化子類 2

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

Calling child1 constructor
Calling parent constructor

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

上面兩句分別調用的是對應子類的子類方法,由于在子類中都分別有調用父類的方法,所以打印結果為:

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

注意:

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

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

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

第二種是直接用self去調用父類的方法,為什么可以這樣調用呢?因為一旦子類繼承了父類,那么子類就擁有父類所有的方法和屬性,所以此時父類的方法和屬性就相當于子類自己了,所以可以直接用self去直接調用實例的方法,而不用再傳入self參數(shù)了。

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

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

總結

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

相關文章

  • python數(shù)據(jù)庫如何連接SQLite詳解

    python數(shù)據(jù)庫如何連接SQLite詳解

    這篇文章主要介紹了Python實現(xiàn)連接SQLite數(shù)據(jù)庫的方法,在Python數(shù)據(jù)庫編程中有著廣泛的應用,需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08
  • 使用Python插入SVG到PDF文檔中的方法示例

    使用Python插入SVG到PDF文檔中的方法示例

    將SVG(可縮放矢量圖形)文件插入到PDF(便攜式文檔格式)文件中不僅能夠保留SVG圖像的矢量特性,確保圖像在任何分辨率下都保持清晰,使得技術文檔、手冊、報告等內容更加豐富多樣且易于傳播,本文將介紹如何使用Python插入SVG文件到PDF文檔中,需要的朋友可以參考下
    2024-08-08
  • python提取word文件中的圖片并上傳阿里云OSS

    python提取word文件中的圖片并上傳阿里云OSS

    這篇文章主要介紹了通過Python提取Word文件中的所有圖片,并將其上傳至阿里云OSS。文中的示例代碼對學習Python有一定的幫助,快跟隨小編一起學習一下吧
    2021-12-12
  • 使用Python生成隨機密碼的示例分享

    使用Python生成隨機密碼的示例分享

    這篇文章主要介紹了使用Python生成隨機密碼的示例分享,比如發(fā)生一些安全問題時為用戶先設置隨機密碼然后供用戶修改的情況下可以用到,需要的朋友可以參考下
    2016-02-02
  • pycharm下配置pyqt5的教程(anaconda虛擬環(huán)境下+tensorflow)

    pycharm下配置pyqt5的教程(anaconda虛擬環(huán)境下+tensorflow)

    這篇文章主要介紹了pycharm下配置pyqt5的教程(anaconda虛擬環(huán)境下+tensorflow),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • django實現(xiàn)前后臺交互實例

    django實現(xiàn)前后臺交互實例

    本篇文章主要介紹了django實現(xiàn)前后臺交互實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Python2寫csv文件中文亂碼問題及解決方法

    Python2寫csv文件中文亂碼問題及解決方法

    python2最大的坑在于中文編碼問題,遇到中文報錯首先加u,再各種encode、decode,這篇文章給大家介紹Python2寫csv文件中文亂碼問題及解決方法,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • Python 對象中的數(shù)據(jù)類型

    Python 對象中的數(shù)據(jù)類型

    對于python,一切事物都是對象,程序中存儲的所有數(shù)據(jù)都是對象,對象基于類創(chuàng)建。這篇文章主要介紹了Python 對象之數(shù)據(jù)類型 ,需要的朋友可以參考下
    2017-05-05
  • Python?pandas中read_csv參數(shù)示例詳解

    Python?pandas中read_csv參數(shù)示例詳解

    使用pandas做數(shù)據(jù)處理的第一步就是讀取數(shù)據(jù),數(shù)據(jù)源可以來自于各種地方,csv文件便是其中之一,下面這篇文章主要給大家介紹了關于Python?pandas中read_csv參數(shù)詳解的相關資料,需要的朋友可以參考下
    2023-01-01
  • pytest生成簡單自定義測試結果的html報告

    pytest生成簡單自定義測試結果的html報告

    這篇文章主要為大家介紹了pytest生成簡單自定義測試結果html報告,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06

最新評論