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

yipeiwu_com6年前Python基础

测试代码如下:

复制代码 代码如下:

 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是要实例化的类的属性集合。

相关文章

Django单元测试工具test client使用详解

The test client test client是一个python类,来模拟一个简单的“哑”浏览器,允许你来测试你的view函数.你可以使用test client完成下列事情: 1...

使用Python来做一个屏幕录制工具的操作代码

使用Python来做一个屏幕录制工具的操作代码

一、写在前面 作为一名测试,有时候经常会遇到需要录屏记录自己操作,方便后续开发同学定位。以前都是用ScreenToGif来录屏制作成动态图,偶尔的机会看到python也能实现。那就赶紧...

Python中字典(dict)合并的四种方法总结

Python中字典(dict)合并的四种方法总结

本文主要给大家介绍了关于Python中字典(dict)合并的四种方法,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍: 字典是Python语言中唯一的映射类型。 映射类型对象...

pandas每次多Sheet写入文件的方法

pandas每次多Sheet写入文件,只能一次性存入,不然每次会重写文件,最后只保留最后一次的写入。 # !usr/bin env python # -*- coding: utf-...

Python升级提示Tkinter模块找不到的解决方法

一、安装tkinter 在Linux中python默认是不安装Tkinter模块, 复制代码 代码如下: [root@li250-193 ~]# python Python 2.6.6...