类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中的所有*是一个对象。这意味着类只是另一个对象,有他们自己的类(一个元类 - 一个类的类)。 –