搜尋
首頁後端開發Python教學實例詳解python中類別的繼承
實例詳解python中類別的繼承Apr 28, 2017 am 09:27 AM
python

這篇文章主要介紹了python類別的繼承實例詳解的相關資料,需要的朋友可以參考下

#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):
  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__方法中的建立的屬性是沒有的,例如上面的例子,第一次執行時得到的例子中並沒有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__函數,繼續尋找父類別的父類別中有沒有,以此類推。可以根據前面例子自己測試。

對於在子類別中呼叫父類別中的方法的super的使用與特性。

總結:如果想了解python虛擬機具體是怎麼建立類別的(具體到當載入一個.pyc檔時,是怎麼透過c語言的程式碼邏輯來把類別物件放到一塊記憶體中的,我也在了解這方面的內容,希望咱們一塊探索)

以上是實例詳解python中類別的繼承的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
详细讲解Python之Seaborn(数据可视化)详细讲解Python之Seaborn(数据可视化)Apr 21, 2022 pm 06:08 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

详细了解Python进程池与进程锁详细了解Python进程池与进程锁May 10, 2022 pm 06:11 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

Python自动化实践之筛选简历Python自动化实践之筛选简历Jun 07, 2022 pm 06:59 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

归纳总结Python标准库归纳总结Python标准库May 03, 2022 am 09:00 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于标准库总结的相关问题,下面一起来看一下,希望对大家有帮助。

分享10款高效的VSCode插件,总有一款能够惊艳到你!!分享10款高效的VSCode插件,总有一款能够惊艳到你!!Mar 09, 2021 am 10:15 AM

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

python中文是什么意思python中文是什么意思Jun 24, 2019 pm 02:22 PM

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

Python数据类型详解之字符串、数字Python数据类型详解之字符串、数字Apr 27, 2022 pm 07:27 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

详细介绍python的numpy模块详细介绍python的numpy模块May 19, 2022 am 11:43 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具