国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python面向對象之繼承代碼詳解

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

2021-01-10 00:09世界看我我看世界 Python

這篇文章主要介紹了Python面向對象之繼承代碼詳解,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文研究的主要是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. 子類只繼承父類所有公有的屬性和方法,并且也可以在子類中通過父類名來調用,而對于私有的屬性和方法,子類是不進行繼承的,因此在子類中是無法通過父類名來訪問的。

實例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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

解析:

?
1
2
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面向對象之繼承代碼詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/seetheworld518/article/details/48810183

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人无遮挡在线视频 | 国产成人精品一区二区三区四区 | 国产91精品一区二区绿帽 | 欧美国产一区二区 | 免费视频一区二区 | 亚洲成人高清 | 亚洲国产精品久久久 | 亚洲一区二区三区免费观看 | 欧美亚洲综合久久 | 国产亚洲欧美美 | 免费裸体视频网站 | 亚洲永久免费 | 男女视频网站 | 亚洲欧美福利视频 | 中文字幕一区二区三区乱码图片 | 中文字幕视频一区 | 精品国内 | 国产精品 日韩 | 成人性毛片 | 91在线观看高清视频 | 精品久久97 | 国产精品视频久久 | 欧美一级片免费播放 | 国产精品久久久久久久 | 亚洲专区国产精品 | 黄色网在线看 | 黄色影视| 国产情侣av自拍 | 国产成人av在线 | 国产激情久久久久久 | 精品天堂| 午夜久久久久 | 久久视频热 | 欧美区国产区 | 国产露脸国语对白在线 | 一呦二呦三呦国产精品 | 国产一区欧美 | 互换娇妻呻吟hd中文字幕 | av色伊人久久综合一区二区 | 成人高清网站 | 精品久久一区二区 |