我正在阅读关于元类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
类创建?
答案 0 :(得分:6)
理论上你是对的。 object
是type
的一个实例。但是,当您检查type
的基类时,您会发现type
继承自object
!怎么会这样?
事实是,这在Python解释器中是硬编码的。 object
和type
都给出了;实际上,两者都没有以任何方式参与其中。
答案 1 :(得分:3)
在对象/类型层次结构的这些稀疏级别中要记住的主要事情是{.1}}和object
之类的内容根本不在.py文件中创建,它们是在C代码中静态创建的,以及CPython的其他基础基础。所以它们不一定是用任何特定的Python代码“创建”的。
答案 2 :(得分:0)
type
有点像 - 嗯,不知道如何描述它 - weirdo 的语言。
它可用于执行类型(someobj)或用作某些类型的构造函数(具有3个参数)来创建从具有实例的基础派生的新类型。正如你在meta-classes中看到的那样 - 制作工厂类很有用 - 尽管恕我直言,除非你真的想要太聪明,使用类装饰器使这在2.6 +
中稍微容易一些