python元类metaclass学习笔记

#深刻理解元类-metaclass
元类的主要目的就是为了当创建类时能够自动地改变类。

1、Python中所有的东西,注意,我是指所有的东西——都是对象。这包括整数、字符串、函数以及类。它们全部都是对象,而且它们都是从一个类创建而来。1:一个int类的实例,add()一个function 类实例
2、1.class:type.‘int’
‘abc’.class:type.‘str’
add.class:type.‘function’

注意:对于任何一个__class__的__class__属性又是什么呢?
a.class.class:type.‘type’
元类就是创建类这种对象的“东西”。
type 是python 的内置元类。
我们可以根据需要创建自己的元类。
4、__metaclass__属性:
如果在定义一个类的时候为它加上__metaclass__属性,
class Foo(object):
metaclass=something……
那么,python就会用元类来创建Foo.如果没有__metaclass__属性,python就会用type来创建类Foo.
当创建一个继承自其他类的新类时,
class Foo(Bar):
metaclass=something……
如果在定义Foo类时添加了__metaclass__属性,Python会在内存中通过__metaclass__创建一个名字为Foo的类对象。如果没有在Foo定义中找到__metaclass__属性,那么python会继续在父类Bar的定义中查找有无__metaclass__属性,如果找到了就用元类创建Foo类。如果没找到,就继续在模块层次中去寻找__metaclass__属性,并尝试同样的操作。如果还是找不到__metaclass__属性,python就会用type来创建Foo.
5、自定义元类:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值