Python 的 type 和 object 之間是怎麼一種關係?

時間 2021-05-11 19:32:10

1樓:言先生

最簡單的回答

python裡一切皆物件。

5:它是乙個物件。

int:它是乙個物件。

type:它是乙個物件。

Python底層是C實現的,5, int 和type都是底層實現中struct的某個例項。而這3個

不同的struct由於它的開頭的內容和struct PyObject是一樣的,所以它們可以強制轉換成PyObject型別。所以在Python環境中,5, int, type都是Python物件(在C環境中的例項都可以當成PyObject例項解釋)

再看型別

5: 它的型別是 int

int:它的型別是type

type:它的型別是type

顯然,PyObject裡應該有乙個member,它是乙個指標,指向乙個型別。5指向的型別是int。int指向的型別是type. type指向的型別是type。

2樓:不喝可樂

1,理解生活中的栗子

2. python metaclass,即我們說的 class type的兩面性

class type是類(本質是模具,作用是生產磨具),那麼你說他生產的磨具不是他的例項嗎? 而他生產的例項又是類.

[類與例項關係]class type是一種特殊的類,它的例項有兩面性站在class type角度講, 他的例項有class str,class dict等,也就是class str, class dict是例項. 這些例項最高父類是object.

站在class str,class dict角度講,他們是類, 可以創造各自的例項這些例項不存在父類的概念

3.好了,理解了 class type創造出的類有兩面性,那麼在想想生活中的栗子吧. 很多人yy了,靠.越說越複雜.

2023年4月5日 10:05:08--更---

我覺得上面說的有點繞,我重新梳理了一下

type連自己都沒放過,type例項化出乙個type物件, 都繼承object.

class type(object):

pass

type = type()

print(type.__class__) #

具體實現是通過指標來搞的,需要搞一下c語言.

3樓:雷虎Ryan

首先了解2條規則

1.若x是A的乙個例項,且A是B的子類,那麼x也是B的乙個例項2.若B是M的例項,且A是B的子類,那麼A也是M的乙個例項首先type為object的子類,(A=type,B=object)>>> issubclass(type,object) True其次object是type的例項(x=object,A=type)>>> isinstance(object,type) True規則1得出object是object的例項(B=object,M=object)

>>> isinstance(object,object) True規則2得出type是object的例項

>>> isinstance(type,object) True同樣可以得到type是type自己例項

>>> isinstance(type,type) True

4樓:DreamYun

python新手試著回答一下:

python裡的一切皆是物件,但是這個物件可以分為兩大類:

1、可以定義type的物件,即type object

2、不可以定義type的物件,即non-object

一些理解的細節:

---- 任何type object的型別就是 ( The type of any type object is )

----如果乙個物件是的例項,那麼他就是type object,否則不是乙個type object(If an object is an instance of , then it is a type. Otherwise, it is not a type.

)----每個物件都有父類(object除外),即是其他類的子類

----每個物件都是乙個例項(type是自身的例項)

----創造物件的方法:1、通過繼承創造物件 2、通過例項化創造物件

----一切皆是例項化。1、通過例項化創造物件,這不需要解釋。2、通過繼承創造物件,本質上是用基類的type object來建立物件。

5樓:asdaspl

讀了1樓分享的原文後總結了一下:(基本和葉雨客差的不多)

type objects/類和元類:可例項化和繼承

non-type objects/例項:不能例項化也不能繼承

everything is object (either type or non-type)

everything is created using a type object or metaclass so that its.__class__ == thattype

type objects(classes-codes) are created by type(theclassstatement )

non-type objects(instances-data) are created and run by type object(thecall operator())

function objects are created by function type object(thedefstatement )

6樓:趙博文

在Python的C原始碼中,用結構體表示Python的類;每個表示類的結構體的第二個欄位都是乙個指向PyTypeObject物件的指標;這個PyTypeObject就是型別物件(type得到的東西),每乙個類的物件共用乙個PyTypeObject物件(所以用的指標)。在python中只要有引用計數(乙個long的整型),指向PyTypeObject的指標就可以成為類。

7樓:灼弦

首先,python裡面一切皆是物件,包括type、object、所有class,全部都是物件,

那物件之間靠什麼聯絡在一起呢?沒錯,靠的就是關係:

Python的世界裡,物件之間一共有兩種關係:

1、繼承關係:

比如有class A和class B(A),再強調一下,A和B都是物件,

則物件B繼承了物件A,或者說A是B的超類,

繼承關係可以通過__base__屬性得知,

如>>>B.

__base__

'>在python裡,所有物件(包括type)均繼承自object,而object則是繼承體系的根,上面再無物件:

>>>object

.__base__

>>>type

.__base__

'object

'>2、例項關係

比如有class A, a = A(),不嫌煩的再強調一下,a和A都是物件,

則物件a是物件A的例項,或者說物件A是物件a的型別,

例項關係可通過__class__屬性獲知:

如>>>a.

__class__

'>在python裡,物件又可以分為三種:type object、class object和non-class object,

type object指type物件及其子類,如:

class

TypeA

(type

):pass

則TypeA和type均屬於type object

class object指obect物件及其子類,如:

classA(

object):

pass

則object和A均屬於class object

non-class object指通過例項化class object得來的物件,如a=

A()則a就是乙個non-class object

三者的區別和聯絡在於:

type object都是type的例項,

class object是type object的例項,

non-class object是class object的例項,

type object和class object都可以進行例項化,

而non-class object不能進行例項化

在python的世界裡,type object和class object這兩種型別的物件都是type物件的例項

而type屬於type object,object屬於class object,則顯然:

>>>

object

.__class__

'type

'>>>>type

.__class__

'type

'>

8樓:劉鑫

這部分我當初是讀MSDN裡關於C Sharp的Object 和 type 的關係讀懂的……你如果手邊有Jeffery的《CLR via C#》 可以讀一下。專門為了這個問題去買一本可能有點奢侈,不過如果你是 .net 程式設計師,我推薦你收一本。

簡單的說,很多執行時體系(不一定是針對某種語言)都提供在執行時獲取型別資訊的功能,那麼獲取出來的是什麼東西呢?獲取出來的是乙個描述型別資訊的物件。那麼所有描述型別資訊的物件,都是「型別」這個型別的例項。

這個type型別不是型別本身,而是用於描述型別的物件例項,型別本身是一種抽象的資訊,type類的例項物件是它具體的資訊載體。既然type型別也是一種型別,那麼它是公共根型別object的乙個派生,也就是合情合理的設計了。

反過來,object 型別並不依賴 type 型別,最多它的一些反射/自省邏輯需要呼叫type

9樓:城陵

所有物件都一定是某乙個類的例項

在python中類也是物件,所有類都是type元類的例項type元類也是物件,它是它自己的例項,它的父類是objectobject是類,它是type的例項,object沒有父類我想這大概是是為了完成完全的物件導向,既然萬物都是物件,那最源頭的物件又是誰的例項?type和object很好地解決了這個問題:抓著自己的鞋帶把自己提起來(bootstrap)。

python新手,說錯請指正。

在 Python 中,為什麼 type 類物件自身的型別是 type?

你開始接觸Python型別系統的乙個非常有趣的分支了。Built in Functions 除了type obj 之外,type還有一種使用方法 type name,bases,dict 這兩個版本都會返回乙個type型別的物件。單引數的版本會返回obj的型別 三引數的版本還是會返回乙個type型別...

iPadPro的typec和安卓typec是否通用?

清明 我的不通用,我是ipadpro2020,蘋果typec資料線可以給華為手機充電,相反,華為typec資料線就不能給ipadpro充電。同樣,兩者耳機轉換器也是一樣 可樂不殺精 type C首先是一種物理介面 聯結器 就像乙個杯子。寄生 於這個物理介面的有很多協議,最有名的當數USB和PD Po...

《Python 核心程式設計》和《Python 學習手冊》哪一本更適合零基礎初學者?為什麼?

TRINITY 我想沒有哪本書像learning python一樣前100多頁都沒有講一點python的語法,這本書從python的特點,從執行方式,從PVM 之前的入門教程裡從來沒提到過這玩意 講起,對於每個部分能多詳細就多詳細。其他的python教程大同小異,但是沒有一本能像這本書一樣 Inuy...