2015-08-26 107 views
2
>>> type(type) 
<type 'type'> 

我預計type的類型是一個函數,因爲它用於返回參數的類型。這是否意味着一個類型可以接受參數?是type東西不尋常/特殊?Python中的'type'是什麼?

回答

1

type是Python的類ur類型。當用一個參數調用時,它返回參數的類型。當用3個參數調用時,它返回一個類,其特徵由參數決定。

+0

什麼是「ur-type」? – user2864740

+0

@ user2864740:這是所有其他類型的類型。 –

1

如在documentations可以清楚地看到 -

類類型(對象)
類類型(名稱,鹼,字典)

帶一個參數,則返回該類型的一個對象。返回值是一個類型對象。建議使用isinstance()內置函數來測試對象的類型。

type是一個類,而不是一個函數。

4

類是對象。所有對象都是類的實例。所以既然一個類是一個對象,它就是某個類的一個實例。類是實例的類名爲type。它是基地metaclass

本來type()只是一個返回對象類的函數。在Python 2.2中,用戶定義的類和內置類型分別爲unifiedtype。爲了向後兼容,當使用一個參數調用時,它的行爲仍舊像舊的type()函數。

5

type元類:其實例也是類的類。該類型的任何其它內置類的也將是type - 如:

>>> type(object) 
<class 'type'> 
>>> type(list) 
<class 'type'> 

事實上,每一個(新式)類也將成爲type一個實例,但如果它是一個自定義元類定義,type(my_class)會是元類。但由於每個元類都需要繼承type,因此對於任何類別,您都將擁有:

>>> isinstance(my_class, type) 
True 
相關問題