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

python類的繼承實例詳解

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

python 類的繼承

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

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

對于類中的__init__函數,只是一個初始化是調用的一個函數(ps:初始化和創(chuàng)建實例并不是一個過程,實例的創(chuàng)建是通過一個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):
  pass
if __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__方法中的創(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__

此時的結果一樣是

{}

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

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

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

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

相關文章

  • Python正則表達式實現截取成對括號的方法

    Python正則表達式實現截取成對括號的方法

    這篇文章主要介紹了Python正則表達式實現截取成對括號的方法,涉及Python正則匹配相關操作技巧,需要的朋友可以參考下
    2017-01-01
  • python3中的函數與參數及空值問題

    python3中的函數與參數及空值問題

    這篇文章主要介紹了python3-函數與參數以及空值,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • Python中關于函數的具體用法范例以及介紹

    Python中關于函數的具體用法范例以及介紹

    函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段。函數能提高應用的模塊性,和代碼的重復利用率。你已經知道Python提供了許多內建函數,比如print()。但你也可以自己創(chuàng)建函數,這被叫做用戶自定義函數
    2021-09-09
  • python中怎么表示空值

    python中怎么表示空值

    在本篇內容里小編給大家整理了關于python如何表示空值的知識點內容,有興趣的朋友們可以跟著學習參考下。
    2020-06-06
  • 用python獲取txt文件中關鍵字的數量

    用python獲取txt文件中關鍵字的數量

    這篇文章主要介紹了如何用python獲取txt文件中關鍵字的數量,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python 中如何實現參數化測試的方法示例

    Python 中如何實現參數化測試的方法示例

    這篇文章主要介紹了Python 中如何實現參數化測試的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • Django接收post前端返回的json格式數據代碼實現

    Django接收post前端返回的json格式數據代碼實現

    這篇文章主要介紹了Django接收post前端返回的json格式數據代碼實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python命令行參數解析之argparse模塊詳解

    Python命令行參數解析之argparse模塊詳解

    這篇文章主要介紹了Python命令行參數解析之argparse模塊詳解,argparse?是?Python?的一個標準庫,用于命令行參數的解析,這意味著我們無需在代碼中手動為變量賦值,而是可以直接在命令行中向程序傳遞相應的參數,再由變量去讀取這些參數,需要的朋友可以參考下
    2023-08-08
  • python實現會員信息管理系統(tǒng)(List)

    python實現會員信息管理系統(tǒng)(List)

    這篇文章主要為大家詳細介紹了python實現會員信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Django 配置多站點多域名的實現步驟

    Django 配置多站點多域名的實現步驟

    這篇文章主要介紹了Django 配置多站點多域名的實現步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05

最新評論