中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中面向對象之繼承的示例分析

發布時間:2021-08-03 11:33:20 來源:億速云 閱讀:123 作者:小新 欄目:開發技術

這篇文章主要介紹了Python中面向對象之繼承的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Python 繼承

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

繼承實現了代碼的重用。

繼承的基本語法:

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

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

多重繼承

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

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

這里需要記住一點:

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

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

  1. 在繼承中基類的構造(__init__()方法)不會被自動調用,它需要在其派生類的構造中親自專門調用。

  2. 在調用基類的方法時,需要加上基類的類名前綴,且需要帶上self參數變量。區別于在類中調用普通函數時并不需要帶上self參數。

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

執行結果:

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

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

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作為參數傳進去并且作為第一個參數,表示指向指向這個類的實例本身。

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

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

  1. issubclass() - 布爾函數判斷一個類是另一個類的子類或者子孫類, 語法:issubclass(sub,sup)

  2. isinstance(obj, Class) 布爾函數如果obj是Class類的實例對象或者是一個Class子類的實例對象則返回true。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python中面向對象之繼承的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江北区| 门头沟区| 庆阳市| 万宁市| 贵港市| 华阴市| 乌兰察布市| 乌拉特中旗| 慈利县| 西青区| 镇雄县| 洮南市| 东城区| 从化市| 家居| 青神县| 北辰区| 嘉禾县| 交城县| 雷州市| 靖边县| 丹凤县| 金塔县| 喀喇| 凉城县| 南陵县| 旌德县| 大渡口区| 名山县| 石首市| 剑阁县| 大足县| 资兴市| 西乌珠穆沁旗| 新源县| 仲巴县| 北流市| 霍邱县| 呼图壁县| 南川市| 清河县|