国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python類的繼承實例詳解

2019-11-25 16:16:45
字體:
來源:轉載
供稿:網友

python 類的繼承

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

這里不區分經典類和新式類,下面分析的對新式類和經典類都適用

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

例子:

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):  passif __name__=="__main__": dg=dog() print dg.__dict__

此時運行的結果為

{}

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

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

此時由于直接調用的父類animal的__init__方法,結果如下:

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

如果此時有一個類繼承dog類,此時會出現什么情況呢?(python解釋器先在子類中尋找__init__方法,如果沒有找到,再從父類中找,直到找到為止,并運行,并且不再運行父類的父類的__init__方法,此時沒有運行的__init__方法中的創建的屬性是沒有的,例如上面的例子,第一次運行時得到的例子中并沒有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" passif __name__=="__main__": dg=jinmao() print dg.__dict__

此時的結果一樣是

{}

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

對于在子類中調用父類中的方法的super的使用與特性。

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴宁市| 洛川县| 乌兰县| 澄城县| 武隆县| 天气| 成安县| 泾源县| 钟祥市| 松阳县| 安多县| 烟台市| 甘洛县| 台山市| 晋江市| 环江| 罗田县| 惠水县| 阳新县| 门源| 博白县| 东莞市| 宁强县| 阿拉善右旗| 安图县| 中方县| 淮阳县| 当阳市| 信宜市| 台中县| 京山县| 甘德县| 兴安盟| 呼和浩特市| 阿勒泰市| 阿坝县| 清苑县| 大丰市| 余干县| 塔河县| 安西县|