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 相关文章推荐
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
Python下载指定页面上图片的方法
May 12 Python
Python实现网络端口转发和重定向的方法
Sep 19 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
Sep 03 Python
Django框架之中间件MiddleWare的实现
Dec 30 Python
python3操作注册表的方法(Url protocol)
Feb 05 Python
python实现udp传输图片功能
Mar 20 Python
python3 简单实现组合设计模式
Jul 02 Python
几款Python编译器比较与推荐(小结)
Oct 15 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 URL编码解码函数代码
2009/03/10 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
使用正则替换变量
2007/05/05 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
javascript的动态加载、缓存、更新以及复用(一)
2014/06/09 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
Angular之toDoList的实现代码示例
2017/12/02 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
让python在hadoop上跑起来
2016/01/27 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
Django实现文件上传和下载功能
2019/10/06 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
国际领先的学术出版商:Springer
2017/01/11 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
星级党支部申报材料
2014/05/31 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
学校党员干部承诺书
2015/05/04 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang