類type
和特定類型之間的關係是什麼?類「類型」和特定類型之間的關係是什麼?
我以爲特定類型的人的type
子類,但:
>>> type
<class 'type'>
>>> import builtins
>>> builtins.issubclass(type, object)
True
>>> builtins.issubclass(int, type)
False
感謝。
類type
和特定類型之間的關係是什麼?類「類型」和特定類型之間的關係是什麼?
我以爲特定類型的人的type
子類,但:
>>> type
<class 'type'>
>>> import builtins
>>> builtins.issubclass(type, object)
True
>>> builtins.issubclass(int, type)
False
感謝。
我以爲特定類型爲類型
他們不是的子類。每個班級的實例的type
; type
充當類的類。 isinstance(class, type)
返回True
,而issubclass
正確返回False
。
issubclass
返回True
的情況與實際繼承自type
的自定義元類(類的類)有關。例如,採取EnumMeta
:
>>> from enum import EnumMeta
>>> issubclass(EnumMeta, type)
這是True
因爲EnumMeta
具有type
作爲基類(從它繼承):
>>> EnumMeta.__bases__
(type,)
如果你看它的源了,你會看到它的定義爲class EnumMeta(type): ...
。
issubclass(type, object)
回報True
的一切,因爲在Python中的每一件事情都是一個對象(指一切從object
繼承)。
所謂的「元類」。 –
謝謝。 「type」是什麼類的對象? – Tim
@Tim'type'是它自己的一個實例:-)(參見'isinstance(type,type)')。這確實令人困惑,並且在一個評論中解釋它是不夠的;你可以看看[這篇不錯的文章](http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html)來解釋這些關係。 –
不,'type'是一個類的**類型**。 –
[這個問題](https://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python)在這個話題上有一些很好的答案。 –
請記住這個咒語:* Python中的所有*是一個對象。這意味着類只是另一個對象,有他們自己的類(一個元類 - 一個類的類)。 –