Python的新式类的基础 - "对象"和"类型"

Alc*_*ott 5 python types object

根据文件,object是所有新式班级的基础.

而AFAIK,所谓的新式课程,只是通过继承获得一些新的东西object,对吧?

我认为object继承type或使用type__metaclass__,但object.__bases__没有给我任何东西,所以它object来自哪个剂量,它和它之间的关系是什么type

kin*_*all 5

实际上,类的类型(即元类)objecttype:

type(object) == type      # True
Run Code Online (Sandbox Code Playgroud)

因为object它是基类,它没有自己的父母,正如你所期望的那样:

object.__bases__ == ()    # True
Run Code Online (Sandbox Code Playgroud)

object没有__metaclass__属性,因为它不需要一个:它使用默认的元类,type.

现在,这是一个有点混乱,因为type事实上是一个子类object,其中博格尔斯头脑(如何type从派生object,当你需要type构建 object?),但是这是要解决一个小硬编码在Python解释器C级.

所有这些仅适用于新式类,即派生自的类object.在Python 3中,所有类都是新式的,因此这在全局范围内适用于Python 3.