python元类与定制元类

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航