我正在学习元类,我发现每个类都是Python中类型类的子类,但有时我看到人们使用对象类,但对象类也是类型类的子类,那么它们之间有什么区别?
object不是 的子类type:它是类型的实例。
object类是 Python 中所有类层次结构的根 - 然而,由于 Python 中的所有内容都是一个实例,因此它必须有一个“类”,当使用正确的参数正确实例化时会产生该“类”。
由于这是一个明显的“先有鸡还是先有蛋”的悖论,毕竟类type本身必须继承自 object,类层次结构的这一部分是在循环中手动连接的:不可能在纯 Python 代码中复制相同的关系。
最后:作为元类的实例的类与继承或作为该元类的子类不同:继承层次结构是一回事,用于构造每个类本身的元类是另一回事,是正交的。
因此,回顾一下:Python 中的所有类本身都是“元类”的实例 - 默认元类是type. Python 中的所有类也继承自object- 其中包括type. 类object本身也必须是 的实例type,并且该关系在 Python 运行时源代码中硬编码(在 cPython 中是用 C 编写的)