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代码调试的几种方法总结
Apr 15 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
Python实现按照指定要求逆序输出一个数字的方法
Apr 19 Python
django框架自定义用户表操作示例
Aug 07 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
python发送多人邮件没有展示收件人问题的解决方法
Jun 21 Python
python 实现批量替换文本中的某部分内容
Dec 13 Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 Python
Python使用Excel将数据写入多个sheet
May 16 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
Jun 23 Python
python获得命令行输入的参数的两种方式
Nov 02 Python
Python批量删除mysql中千万级大量数据的脚本分享
Dec 03 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 AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
php截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
Js 本页面传值实现代码
2009/05/17 Javascript
js判断样式className同时增加class或删除class
2013/01/30 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
js Calender控件使用详解
2015/01/05 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
jquery实现的判断倒计时是否结束代码
2016/02/05 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
Python中关于字符串对象的一些基础知识
2015/04/08 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
详解Python的三种可变参数
2019/05/08 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
解除财产保全担保书
2014/05/20 职场文书
2014年个人售房协议书
2014/10/30 职场文书
订货会主持词
2015/07/01 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
《颐和园》教学反思
2016/02/19 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP
Python操作CSV格式文件的方法大全
2021/07/15 Python