Python的metaclass构建类过程

metaclass文章集: http://www.mantingzhou.com/subject/40/

python的metaclass晦涩难懂,本文通过调试工具展示metaclass构建类的过程。

Python使用type()构建类(新式类),构建过程是先读入类定义到一个独立的命名空间,接着调用type(name, bases, dict)生成新的类对象,最后把生成类对象绑定到类名(type参数name)。


读入类定义时,如果类定义中存在__metaclass__,将使用__metaclass__的值替代type()。__metaclass__的值是可调用对象(callable object,类或函数),可用于监视和修改类创建过程:

  • 在类创建之前修改类字典。
  • 返回其他类实例。

上述过程一般在metaclass的__new__()方法中执行。

无__metaclass__构建过程:

1~6读入(1进入,6跳出)。

7~11构建类实例(7~9创建类实例,9~11初始化类实例)。

Python解释器读入包含__metaclass__的类后,紧接着依次调用__metaclass__的__new__()、__init__(),修改类对象。

有__metaclass__构建过程:

1~4读入metacls.

5~11读入klass.

12~15修改klass.

16~20构建类实例.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值