Python中type的构造函数参数含义说明


Posted in Python onJune 21, 2015

测试代码如下:

 class ModelMetaClass(type):

     def __new__(cls,name,base,attrs):

         logging.info("cls is:"+str(cls))

         logging.info("name is:"+str(name))

         logging.info("base is:"+str(base))

         logging.info("attrs is:"+str(attrs))

         return type.__new__(cls,name,base,attrs)

         pass

     pass

 

 class Model(dict):

     __metaclass__ = ModelMetaClass

     def __init__(self):

         pass

     pass

 

 def main():

     m=Model()

 

 if __name__ == '__main__':

     main()

测试结果:
 INFO:root:cls is:<class '__main__.ModelMetaClass'>

 INFO:root:name is:Model

 INFO:root:base is:(<type 'dict'>,)

 INFO:root:attrs is:{'__module__': '__main__', '__metaclass__': <class '__main__.ModelMetaClass'>, '__init__': <function __init__ at 0x025C76F0>}

结论就显而易见了。cls是当前类的名字,即类本身。name是通过__metaclass__属性指向ModelMetaClass的类,即要实例化的类,ModelMetaClass拦截了该类的实例化。base是要实例化的类的基类。attrs是要实例化的类的属性集合。
Python 相关文章推荐
Django模板变量如何传递给外部js调用的方法小结
Jul 24 Python
tf.truncated_normal与tf.random_normal的详细用法
Mar 05 Python
python验证码识别教程之利用滴水算法分割图片
Jun 05 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
Python装饰器语法糖
Jan 02 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
Python中栈、队列与优先级队列的实现方法
Jun 30 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
用python解压分析jar包实例
Jan 16 Python
PyTorch中的拷贝与就地操作详解
Dec 09 Python
pandas统计重复值次数的方法实现
Feb 20 Python
Python base64编码解码实例
Jun 21 #Python
python在控制台输出进度条的方法
Jun 20 #Python
python压缩文件夹内所有文件为zip文件的方法
Jun 20 #Python
Python写的一个简单监控系统
Jun 19 #Python
详解Python中的日志模块logging
Jun 19 #Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 #Python
举例详解Python中threading模块的几个常用方法
Jun 18 #Python
You might like
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
2011/06/04 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
vue使用exif获取图片旋转,压缩的示例代码
2020/12/11 Vue.js
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
[01:44]Ti10举办地公布
2019/08/25 DOTA
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
python归并排序算法过程实例讲解
2020/11/04 Python
python解包用法详解
2021/02/17 Python
数据库什么时候应该被重组
2012/11/02 面试题
学生生病请假条范文
2014/02/16 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
创优争先心得体会
2014/09/11 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书