Python中type构造函数参数说明

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

测试代码如下:

1classModelMetaClass(type):2def__new__(cls,name,base,attrs):3logging.info("cls is:"+str(cls))4logging.info("name is:"+str(name))5logging.info("base is:"+str(base))6logging.info("attrs is:"+str(attrs))7returntype.__new__(cls,name,base,attrs)8pass9pass1011classModel(dict):12__metaclass__=ModelMetaClass13def__init__(self):14pass15pass1617defmain():18m=Model()1920if__name__=='__main__':21main()

测试结果:

1INFO:root:clsis:<class'__main__.ModelMetaClass'>2INFO:root:nameis:Model3INFO:root:baseis:(<type'dict'>,)4INFO:root:attrsis:{'__module__':'__main__','__metaclass__': <class'__main__.ModelMetaClass'>,'__init__': <function__init__at 0x025C76F0>}

结论就显而易见了。cls是当前类的名字,即类本身。name是通过__metaclass__属性指向ModelMetaClass的类,即要实例化的类,ModelMetaClass拦截了该类的实例化。base是要实例化的类的基类。attrs是要实例化的类的属性集合。

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