Python类的创建过程
类的创建过程 以下说的类指的类本身,例如以下代码: class Foo: def __init__(self): pass 则指的 Foo 的创建过程,而不是 Foo 的实例。 1. 解析 MRO 记录(Resolving MRO entries) 根据 MRO 规则解析继承关系 2. 确定元类(Determining the appropriate metaclass) 查找元类的过程遵循以下规则: 如果没有基类且没有指定 metaclass ,则使用 type() 如果指定了 metaclass 且它不是 type() 的实例,则直接使用 metaclass 如果指定了 type() 实例的 metaclass 或者有基类,(the most derived metaclass is used. ??) 3. 准备命名空间(Preparing the class namespace) 当元类确定后,类的命名空间也可以确定了。 如果元类有 __prepare__ 属性,则 namespace = metaclass.__prepare__(name, bases, **kwargs) ,否则命名空间会初始化为有序的空map(empty ordered mapping.) 4. 执行 Class 内语句(Executing the class body) 类内的语句通过 exec