2

我正在阅读这篇关于元类的优秀文章什么是 Python 中的元类?. 接受的答案显示了如何使用type以下签名创建类。

type(name of the class, 
      tuple of the parent class (for inheritance, can be empty), 
      dictionary containing attributes names and values)

这让我想知道是谁创建了对象类。对象类也是由type类创建的吗?

4

3 回答 3

6

理论上你是对的。object是 的一个实例type。但是,当您检查type的基类时,您会发现它type继承自object! 怎么会这样?

事实是,这在 Python 解释器中是硬编码的。两者objecttype给出;两者实际上都没有以任何方式参与创建另一个。

于 2012-06-25T20:07:28.800 回答
3

在对象/类型层次结构的这些稀有级别上要记住的主要事情是,类似的东西object根本type不是在 .py 文件中创建的,它们是在 C 代码中静态创建的,以及 CPython 的其他基础基础。所以它们不一定是用任何特定的 Python 代码“创建”的。

于 2012-06-25T20:30:44.727 回答
0

type有点 - 嗯,不知道如何描述它 -语言的怪人

它可以用来做 type(someobj) 或用作某种构造函数(带有 3 个参数)来创建从带有实例的基类派生的新类型。正如您在元类中看到的那样 - 制作工厂类很有用 - 虽然,恕我直言,除非您真的想太聪明,否则使用类装饰器会使这在 2.6+ 中稍微容易一些

于 2012-06-25T20:13:04.640 回答