类型是否在python中创建类'Object'

时间:2012-06-25 20:01:45

标签: python metaclass

我正在阅读关于元类What is a metaclass in Python?的这篇优秀文章。接受的答案显示了如何使用具有以下签名的type创建类。

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

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

type有点像 - 嗯,不知道如何描述它 - weirdo 的语言。

它可用于执行类型(someobj)或用作某些类型的构造函数(具有3个参数)来创建从具有实例的基础派生的新类型。正如你在meta-classes中看到的那样 - 制作工厂类很有用 - 尽管恕我直言,除非你真的想要太聪明,使用类装饰器使这在2.6 +

中稍微容易一些