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

python類的繼承實例詳解

 更新時間:2017年03月30日 14:19:39   投稿:lqh  
這篇文章主要介紹了python類的繼承實例詳解的相關(guān)資料,需要的朋友可以參考下

python 類的繼承

對于許多文章講解python類的繼承,大多數(shù)都是說一些什么oop,多態(tài)等概念,我認為這樣可能對有一定基礎(chǔ)的開發(fā)者幫助不是那么大,不如直接用在各種情況下所寫的代碼,來展示對于某一種代碼情況,代碼運行會有什么效果。這樣可能對開發(fā)者的幫助更大。不說廢話,直接上代碼。

這里不區(qū)分經(jīng)典類和新式類,下面分析的對新式類和經(jīng)典類都適用

對于類中的__init__函數(shù),只是一個初始化是調(diào)用的一個函數(shù)(ps:初始化和創(chuàng)建實例并不是一個過程,實例的創(chuàng)建是通過一個create函數(shù)來完成的),如果在子類中沒有顯示的聲明__init__函數(shù),則子類就會調(diào)用父類的__init__函數(shù),但是不會再調(diào)用父類的父類中的__init__函數(shù),如果顯示的聲明了__init__ 函數(shù),則在子類的初始化的時候就不會調(diào)用父類的初始化函數(shù),只會調(diào)用子類中聲明的__init__函數(shù), 同時在子類實例中也不會有父類__init__函數(shù)中聲明的屬性,

例子:

class animal():
 name="hh"
 sex="man"
 def __init__(self):
  self.height=10
  self.weight=50
 def deception(self):
  print "ansible.height:"+self.height+" animal.weight:"+self.weight
 def run(self):
  print "animal is running...."
class dog(animal):
 def __init__(self):
  pass
if __name__=="__main__":
 dg=dog()
 print dg.__dict__

此時運行的結(jié)果為

{}

當(dāng)把dog類修改為如下時(ps:此時沒有顯示的聲明__init__方法):

class dog(animal):
 def run(self):
  print "dog is running..."

此時由于直接調(diào)用的父類animal的__init__方法,結(jié)果如下:

{'weight': 50, 'height': 10}

如果此時有一個類繼承dog類,此時會出現(xiàn)什么情況呢?(python解釋器先在子類中尋找__init__方法,如果沒有找到,再從父類中找,直到找到為止,并運行,并且不再運行父類的父類的__init__方法,此時沒有運行的__init__方法中的創(chuàng)建的屬性是沒有的,例如上面的例子,第一次運行時得到的例子中并沒有weight和height屬性)

class animal():
 name="hh"
 sex=""
 def __init__(self):
  self.height=10
  self.weight=50
 def deception(self):
  print "ansible.height:"+self.height+" animal.weight:"+self.weight
 def run(self):
  print "animal is running...."
class dog(animal):
 def __init__(self):
  pass
 def run(self):
  print "dog is running..."
class jinmao(dog):
 # def __init__(self):
 #  self.ji="jinmao"
 pass
if __name__=="__main__":
 dg=jinmao()
 print dg.__dict__

此時的結(jié)果一樣是

{}

在類的多繼承中會產(chǎn)生什么狀況呢?(在多繼承中會運行類的繼承參數(shù)中的第一個參數(shù)聲明的父類中的__init__函數(shù),如果父類中沒有__init__函數(shù),繼續(xù)尋找父類的父類中有沒有,以此類推。。。如果找到了頭還是沒有,則換為第二個參數(shù)聲明的父類,過程如第一個參數(shù),知道找到__init__函數(shù)為止,如果都沒有找到,則不初始化),代碼可以根據(jù)前面例子自己測試。

對于在子類中調(diào)用父類中的方法的super的使用與特性。

總結(jié):如果想了解python虛擬機具體是怎么創(chuàng)建類的(具體到當(dāng)加載一個.pyc文件時,是怎么通過c語言的代碼邏輯來把類對象放到一塊內(nèi)存中的,我也在了解這方面的內(nèi)容,希望咱們一塊探索)

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

最新評論

榕江县| 崇州市| 油尖旺区| 安图县| 亳州市| 清苑县| 鸡西市| 通渭县| 梓潼县| 荆州市| 石楼县| 浪卡子县| 治多县| 阳朔县| 成安县| 西昌市| 榆社县| 濮阳市| 中阳县| 奉节县| 武川县| 平舆县| 天水市| 会泽县| 长兴县| 恩施市| 兰考县| 盐津县| 斗六市| 团风县| 青河县| 常山县| 江津市| 阿克苏市| 绍兴市| 临颍县| 庆阳市| 赞皇县| 金坛市| 会昌县| 吉林市|