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

Python中類型關(guān)系和繼承關(guān)系實(shí)例詳解

 更新時(shí)間:2015年05月25日 15:07:44   作者:惟愿蓮心不染塵  
這篇文章主要介紹了Python中類型關(guān)系和繼承關(guān)系,較為詳細(xì)的分析了Python中類型關(guān)系和繼承關(guān)系的原理與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文詳細(xì)介紹了Python中類型關(guān)系和繼承關(guān)系。分享給大家供大家參考。具體分析如下:

如果一個(gè)對(duì)象A持有另一個(gè)對(duì)象B的ID,那么檢索到A之后就可以檢索到B,我們就說(shuō)存在一個(gè)A到B的導(dǎo)航。這種導(dǎo)航關(guān)系使得Python中所有對(duì)象之間形成了一個(gè)復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)。

Python程序的運(yùn)行包括:

1. 修改這個(gè)網(wǎng)絡(luò)結(jié)構(gòu);
2. 執(zhí)行有副作用的代碼對(duì)象(code object或者說(shuō)bytecode,見Python Language Reference 3.2)
(副作用是指影響Python虛擬機(jī)之外的設(shè)備,這些代碼都是用C或者別的語(yǔ)言寫的,Python寫的代碼只能完成第一步的功能。print語(yǔ)句除外。)

Python對(duì)象之間有兩種導(dǎo)航關(guān)系:繼承關(guān)系和類型關(guān)系,是Python中最基本的關(guān)系。類型關(guān)系說(shuō)明一個(gè)對(duì)象是通過(guò)哪個(gè)對(duì)象創(chuàng)建的;繼承關(guān)系說(shuō)明對(duì)象之間的父子關(guān)系,這種父子關(guān)系在名字的解析過(guò)程中起到作用。這里我首先說(shuō)New Style類之間的這兩種關(guān)系,掌握了New Style類的關(guān)系后,再來(lái)說(shuō)明Classic類就容易了。

首先需要說(shuō)明一下的是內(nèi)置模塊中的type是什么。大家都知道type可以用來(lái)判斷一個(gè)對(duì)象的類型,好像是一個(gè)函數(shù)。實(shí)際上在2.2中type是一個(gè)類,而且不是普通的類,是一個(gè)可以創(chuàng)建類的類,稱為元類。你運(yùn)行type(type)試一下,打印的是。type類是Python類型系統(tǒng)的核心。用type作為一個(gè)判斷類型的函數(shù)使用是比較特殊的情況,或許是由歷史原因造成的,用typeof或許更合適。

如何構(gòu)造一個(gè)類型

你肯定知道是用class語(yǔ)句。但是實(shí)際上,在Python核心看來(lái),只有一種方式,那就是調(diào)用type的構(gòu)造函數(shù)(因?yàn)閠ype是一個(gè)類型)。當(dāng)運(yùn)行:

class A(object): 
 def f(self): print 1

Python解析器就會(huì)執(zhí)行如下代碼所示功能:

def f(self): print 1
A=type('A', (object,), ) # 參數(shù)為(名字, 父類tuple,成員dict)
del f

兩者效果幾乎是一樣的,你可以試一下。

類型關(guān)系的確定除了使用type之外,還可以使用__class__屬性。如:

class A(object): pass
a=A()     
a.__class__ # 'class __main__.A'
A.__class__ # 'type '
type.__class__ # 'type '
type.__class__.__class__ # 'type '
type.__class__ is type.__class.__class__ # True

繼承關(guān)系

繼承關(guān)系只發(fā)生在類型之間,繼承關(guān)系構(gòu)成一個(gè)有向圖。所有的類型都是從object繼承來(lái)的。“所有的”當(dāng)然也包括type。object的父類還是object。object作為一個(gè)類型對(duì)象也是有其類型的,這個(gè)類型就是type。所以object和type之間的關(guān)系就好比先有雞還是先有蛋的問題了:type是從object繼承的(繼承關(guān)系);object是由type生成的(類型關(guān)系)。通過(guò)issubclass或者_(dá)_bases__屬性來(lái)判斷兩個(gè)類之間的繼承關(guān)系。

那么從type繼承意味著什么呢?那意味著這個(gè)類的類型是type,同時(shí)父類也是type。但是這種做法在一般的編程中是沒有什么意義的(卻是meta programmming的核心)。因?yàn)橐话愣加胏lass語(yǔ)句,而不是通過(guò)調(diào)用type的構(gòu)造函數(shù)來(lái)創(chuàng)建類型對(duì)象。為了說(shuō)明語(yǔ)法還是舉個(gè)例子:

class mytype(type): pass
A=mytype('A', (object,), {}) # 
del f
A.__class__ # class '__main__.mytype',元類為mytype
mytype.__class__ # 'type '

在用class定義一個(gè)類時(shí),會(huì)間接調(diào)用type的構(gòu)造函數(shù)。但是通過(guò)設(shè)置__metaclass__屬性,可以不去調(diào)用type,而是調(diào)用type的子類。如:

class A(object):
 __metaclass__ = mytype
A.__class__ # class '__main__.mytype' ,和上面的方式結(jié)果一樣。

由此,Python對(duì)象的類型關(guān)系組成了一個(gè)樹型結(jié)構(gòu),其中type處于樹的根部,由type或者type的子類構(gòu)造的類型,包括class定義的類(間接調(diào)用type),調(diào)用type、type的子類構(gòu)造函數(shù)創(chuàng)建的類,int list等系統(tǒng)定義類型處于中間節(jié)點(diǎn),葉節(jié)點(diǎn)為instance對(duì)象。type本身的類型是什么呢?還是type。這和根目錄的父目錄還是根目錄是一樣的。

Classic類不同于New Style類的地方就是當(dāng)用class創(chuàng)建一個(gè)類時(shí),不是間接調(diào)用type,而是間接調(diào)用types.ClassType,而types.ClassType是由type創(chuàng)建的。

class A: pass
type(A) # type 'classobj',注意沒有__class__屬性。
type(A) is types.ClassType # True
types.ClassType.__class__ # 'type'

希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 如何基于python實(shí)現(xiàn)畫不同品種的櫻花樹

    如何基于python實(shí)現(xiàn)畫不同品種的櫻花樹

    這篇文章主要介紹了如何基于python實(shí)現(xiàn)畫不同品種的櫻花樹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • opencv實(shí)現(xiàn)文檔矯正

    opencv實(shí)現(xiàn)文檔矯正

    這篇文章主要為大家詳細(xì)介紹了opencv實(shí)現(xiàn)文檔矯正功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • python 除法保留兩位小數(shù)點(diǎn)的方法

    python 除法保留兩位小數(shù)點(diǎn)的方法

    今天小編就為大家分享一篇python 除法保留兩位小數(shù)點(diǎn)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python中2種常用數(shù)據(jù)可視化庫(kù)Bokeh和Altair使用示例詳解

    Python中2種常用數(shù)據(jù)可視化庫(kù)Bokeh和Altair使用示例詳解

    本文對(duì)Python中兩個(gè)常用的數(shù)據(jù)可視化庫(kù)?Bokeh?和?Altair?進(jìn)行了比較和探討,通過(guò)對(duì)它們的特點(diǎn)、優(yōu)缺點(diǎn)以及使用示例的詳細(xì)分析,讀者可以更好地了解這兩個(gè)庫(kù)的功能和適用場(chǎng)景,從而更好地選擇合適的庫(kù)來(lái)進(jìn)行數(shù)據(jù)可視化工作,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • 調(diào)試Django時(shí)打印SQL語(yǔ)句的日志代碼實(shí)例

    調(diào)試Django時(shí)打印SQL語(yǔ)句的日志代碼實(shí)例

    這篇文章主要介紹了調(diào)試Django時(shí)打印SQL語(yǔ)句的日志代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python+wxPython構(gòu)建中文OCR截圖工具

    Python+wxPython構(gòu)建中文OCR截圖工具

    隨著數(shù)字化時(shí)代的到來(lái),我們經(jīng)常需要從圖像中提取文本信息,本文將介紹如何使用Python編程語(yǔ)言和wxPython圖形用戶界面庫(kù)構(gòu)建一個(gè)簡(jiǎn)單的中文OCR截圖工具,需要的可以參考下
    2023-08-08
  • python在多玩圖片上下載妹子圖的實(shí)現(xiàn)代碼

    python在多玩圖片上下載妹子圖的實(shí)現(xiàn)代碼

    學(xué)python的第二天,想寫個(gè)東西出來(lái)玩玩,于是就寫了這個(gè),供那些才學(xué)一天的參考參考也行
    2013-08-08
  • python 輸出上個(gè)月的月末日期實(shí)例

    python 輸出上個(gè)月的月末日期實(shí)例

    下面小編就為大家分享一篇python 輸出上個(gè)月的月末日期實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • wxPython實(shí)現(xiàn)窗口用圖片做背景

    wxPython實(shí)現(xiàn)窗口用圖片做背景

    這篇文章主要為大家詳細(xì)介紹了wxPython實(shí)現(xiàn)窗口用圖片做背景,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • python使用tkinter實(shí)現(xiàn)自定義多參數(shù)對(duì)話框

    python使用tkinter實(shí)現(xiàn)自定義多參數(shù)對(duì)話框

    Tkinter模塊是Python標(biāo)準(zhǔn)庫(kù)中的一部分,用于創(chuàng)建圖形用戶界面(GUI)應(yīng)用程序,它提供了一組工具和組件,用于創(chuàng)建窗口、按鈕、文本框等用戶界面元素,并且可以響應(yīng)用戶的輸入,本文將給大家講講python如何使用tkinter實(shí)現(xiàn)自定義多參數(shù)對(duì)話框
    2023-08-08

最新評(píng)論

交城县| 弥勒县| 普洱| 江西省| 镇坪县| 灌阳县| 资中县| 阿拉尔市| 金坛市| 苏州市| 永康市| 承德县| 武安市| 清原| 贵南县| 天柱县| 滨州市| 阿拉善左旗| 临猗县| 平塘县| 无锡市| 南皮县| 富阳市| 琼海市| 六盘水市| 垦利县| 花莲市| 古田县| 绥宁县| 永州市| 田林县| 六安市| 连城县| 任丘市| 宁夏| 息烽县| 东乡| 淮北市| 东山县| 祁阳县| 佛坪县|