學習python的同學都知道這麽幾句話
object類是所有新式類的父類。
type是所有類的類。
那麽type和object是什麽關系呢?
object是一個新式類,我們可以通過object.__class__
和object.__bases__
來獲取object所屬的類核他的父類。
>>> object.__class__
<type 'type'>
這說明 object類是一個type元類的實例。這與type是所有新式類的類這一說法相符合。
>>> object.__bases__
()
這說明 object類已經處於繼承鏈條的頂端,是所有類的父類。
>>> type.__class__
<type 'type'>
這說明type自身的類就是type。就是說type元類也就是由type自身創建的。
>>> type.__base__
<type 'object'>
這就是說type這一元類的父類是object。
我們來捋一捋,也就是說:
object類是由元類type創建的,但是type類又繼承了object類。 type元類的類則是由type元類自身創建的。
我們把python中的內置類和用戶創建的內納入其中,我們就可以畫出一下關系圖
簡單說明一下出了type和object關系的其他部分。
int、float、str、boolean、tuple、dict、set等內置的數據類型其實也就是內置的類。
type是一個比較特殊的類,他是所有類的類。所以估計要與int等這種類保持一致,所以也是小寫的?
我們日常在程序中創建的具體的整數, 浮點數、字典、元祖等就是上面int、float、boolean等的實例。
我們寫代碼的創建的自定義類分兩種,一種是新式類,一種是經典類。
新式類的類都是type,它的最終父類是object。
經典類的創建者,也是是經典類的類是一個叫classobj的東西,classobj的類才是type。
以上文字僅基於自己的理解。有錯誤還請指正。
Tags: python 程序 經典 用戶
文章來源: