1:元类
元类:类的创建与管理者
所有类的元类是type
classa:passPRint(type(a))
结果:<class 'type'>
2:定制元类
类的实例化过程:(可看类的基础与要点)
1)调用__new__()创建实例
2)调用__init__()初始化上面创建出来的实例
所以:定制实例便是改变父类的__new__()或__init__()方法
例子:
1classMyMeta(type):2def__init__(self,name,bases,dicts):3print('Init Instance.')45def__new__(cls,name,bases,dicts):6dicts['info'] =lambdaself:print('Djx.')#追加实例方法info()7res = type.__new__(cls,name,bases,dicts)#调用父类type的new方法实例化实例8res.company ='MaiZi'#追加属性9returnres#返回实例1011classcustom(metaclass=MyMeta):#用关键字表明元类不是type而是MyMeta12pass1314if__name__=='__main__':15cus =custom()16cus.info()17print(cus.company)181920#Python2.x的写法21#class cus:22#__metaclass__ = MyMeta23#pass
运行结果:
Init Instance.
Djx.
MaiZi