日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python中type和object的关系

發(fā)布時間:2025/3/20 python 10 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中type和object的关系 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

知乎上看到的提問:

兩個是互為實例的關系,但不是互為子類的關系,只有type是object的子類,反之則不成立。 大牛說兩者是蛋生雞雞生蛋的關系,但我還是不明白,有懂的麻煩解釋一下, 希望不要給出外文的鏈接。python為什么設計出兩個,去掉一個行不行?

下面是jeff kit的回答:
給別人講解過很多次,但寫成文字是第一次。試一試吧,自己主要也是看了這篇文章(Python Types and Objects)才懂的。object 和 type的關系很像雞和蛋的關系,先有object還是先有type沒法說,obejct和type是共生的關系,必須同時出現(xiàn)的。在看下去之前,也要請先明白,在Python里面,所有的東西都是對象的概念。在面向對象體系里面,存在兩種關系:- 父子關系,即繼承關系,表現(xiàn)為子類繼承于父類,如『蛇』類繼承自『爬行動物』類,我們說『蛇是一種爬行動物』,英文說『snake is a kind of reptile』。在python里要查看一個類型的父類,使用它的bases屬性可以查看。- 類型實例關系,表現(xiàn)為某個類型的實例化,例如『萌萌是一條蛇』,英文說『萌萌 is an instance of snake』。在python里要查看一個實例的類型,使用它的class屬性可以查看,或者使用type()函數(shù)查看。這兩種關系使用下面這張圖簡單示意,繼承關系使用實線從子到父連接,類型實例關系使用虛線從實例到類型連接:

我們將使用一塊白板來描述一下Python里面對象的關系,白板劃分成三列:

先來看看type和object:

>>> object <type 'object'> >>> type <type 'type'>

它們都是type的一個實例,表示它們都是類型對象。

在Python的世界中,object是父子關系的頂端,所有的數(shù)據(jù)類型的父類都是它;type是類型實例關系的頂端,所有對象都是它的實例的。它們兩個的關系可以這樣描述:

  • object是一個type,object is an instance of type。即Object是type的一個實例。
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> object.__class__ <type 'type'> >>> object.__bases__ # object 無父類,因為它是鏈條頂端。 ()
  • type是一種object, type is kind of object。即Type是object的子類。
>>> type.__bases__ (<type 'object'>,) >>> type.__class__ # type的類型是自己 <type 'type'>

此時,白板上對象的關系如下圖:

我們再引入list, dict, tuple 這些內置數(shù)據(jù)類型來看看:

''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> list.__bases__ (<type 'object'>,) >>> list.__class__ <type 'type'> >>> dict.__bases__ (<type 'object'>,) >>> dict.__class__ <type 'type'> >>> tuple.__class__ <type 'type'> >>> tuple.__bases__ (<type 'object'>,)

它們的父類都是object,類型都是type。

再實例化一個list看看:

''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> mylist = [1,2,3] >>> mylist.__class__ <type 'list'> >>> mylist.__bases__ Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'list' object has no attribute '__bases__'

實例化的list的類型是<type ‘list’>, 而沒有了父類。

把它們加到白板上去:

白板上的虛線表示源是目標的實例,實線表示源是目標的子類。即,左邊的是右邊的類型,而上面的是下面的父親。

虛線是跨列產生關系,而實線只能在一列內產生關系。除了type和object兩者外。

當我們自己去定個一個類及實例化它的時候,和上面的對象們又是什么關系呢?試一下:

''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> class C(object): ... pass ... >>> C.__class__ <type 'type'> >>> C.__bases__ (<type 'object'>,)

實例化

>>> c = C() >>> c.__class__ <class '__main__.C'> >>> c.__bases__ Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'C' object has no attribute '__bases__'

這個實例化的C類對象也是沒有父類的屬性的。
再更新一下白板:

白板上的第一列,目前只有type,我們先把這列的東西叫Type。

白板上的第二列,它們既是第三列的類型,又是第一列的實例,我們把這列的對象叫TypeObject。

白板上的第三列,它們是第二列類型的實例,而沒有父類(bases)的,我們把它們叫Instance。

你以為事情就這樣完了?不。。看見type孤零零在第一列其實不是那么舒服。。我們給它整幾個玩伴看看。但要怎么整呢?要屬于第一列的,必須是type的子類,那么我們只需要繼承type來定義類就可以了:

''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> class M(type): ... pass ...? >>> M.__class__ <type 'type'> >>> M.__bases__ (<type 'type'>,) >>>

嗯嗯,M類的類型和父類都是type。這個時候,我們可以把它歸到第一列去。那么,要怎么樣實例化M類型呢?實例化后它應該出現(xiàn)在那個列?嗯嗯,好吧,剛才你一不小心創(chuàng)建了一個元類,MetaClass!即類的類。如果你要實例化一個元類,那還是得定義一個類:

''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> class TM(object): ... __metaclass__ = M # 這樣來指定元類。 ...? ...? >>> TM.__class__ <class '__main__.M'> # 這個類不再是type類型,而是M類型的。 >>> TM.__bases__ (<type 'object'>,)

好了,現(xiàn)在TM這個類就是出現(xiàn)在第二列的。

再總結一下:
第一列,元類列,type是所有元類的父親。我們可以通過繼承type來創(chuàng)建元類。
第二列,TypeObject列,也稱類列,object是所有類的父親,大部份我們直接使用的數(shù)據(jù)類型都存在這個列的。
第三列,實例列,實例是對象關系鏈的末端,不能再被子類化和實例化。

到現(xiàn)在為止,Python類型的秘密已經(jīng)說穿了,不一小心連元類也暴露了。哎。慢慢消化吧,信息量很大。

總結

以上是生活随笔為你收集整理的Python中type和object的关系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久精品99 | 天堂在线中文资源 | 夜夜夜影院 | 一本到在线视频 | 色姐 | 激情综合色 | 黄a在线观看 | 黄色片视频免费在线观看 | 中文字幕 欧美激情 | 自拍一区在线 | 亚洲码欧美码一区二区三区 | 97精品人妻麻豆一区二区 | 大吊av | 男男免费视频 | 国产成人精品免高潮在线观看 | 成人福利网 | 日韩123 | 亚洲GV成人无码久久精品 | 日韩精品成人免费观看视频 | 青青草原国产 | 欧美资源网 | 在线看日本 | 99热免费| 午夜在线国产 | wwwwxxx日本 | 俺去草| 在线va| 淫羞阁av导航 | 精品国偷自产在线 | 成人蜜桃视频 | 久久久久亚洲av无码网站 | 午夜久久影院 | 成人av影视在线观看 | 国产精品久久久久久久久免费桃花 | 伊人网国产 | 久久亚洲熟女cc98cm | 亚洲精品国产成人无码 | 涩婷婷| 欧美 日韩 国产在线 | 日本精品视频在线播放 | 四虎黄色| 日本大尺度做爰呻吟舌吻 | 少妇69xx| 91精品国产综合久久国产大片 | 国产一级片a | 波多野吉衣一区二区三区 | 偷偷色噜狠狠狠狠的777米奇 | www.亚色| 女生抠逼视频 | 亚洲琪琪| 18av在线视频| 成人爱爱视频 | 活大器粗np高h一女多夫 | 色婷婷av一区二区三区gif | 精品国产一区二区三区久久狼黑人 | 亚洲精品97| 午夜插插插 | 特高潮videossexhd| 91国自产精品中文字幕亚洲 | 国产精品久久久久久久久久久久午夜片 | 蜜臀av88| 国产网站在线免费观看 | 国产av一区二区三区精品 | 欧美性xxxxxxxxx| 日本黄色片视频 | 中文字幕一区二区av | 波多野结衣爱爱 | 无码人妻丰满熟妇精品 | 办公室摸腿吻胸激情视频 | 夜夜躁日日躁狠狠久久av | 日韩三级国产精品 | 男人插入女人下面的视频 | 日本欧美一区二区三区不卡视频 | 国产精品久久国产精品 | 国产刺激高潮av | 久久老熟女一区二区三区 | 激情拍拍拍 | 熟女毛毛多熟妇人妻aⅴ在线毛片 | 在线视频h | 91国产一区| 岳狂躁岳丰满少妇大叫 | av三级| 伊人久久大 | 四虎在线播放 | 欧美日韩国产免费观看 | 国产在线自| 精品在线视频观看 | 亚洲涩色 | 成人免费视频播放 | 成人亚洲黄色 | 无码国精品一区二区免费蜜桃 | 亚洲欧美校园春色 | 日韩久久久久久久久久久 | 亚洲色图25p | 激情小说中文字幕 | 外国黄色网| 日日夜夜撸啊撸 | 亚洲欧洲精品一区二区三区 | 欧美一级免费黄色片 |