Python中type的构造函数参数含义说明
测试代码如下:
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类里的__init__方法函数,Python类的构造函数
如果某类里没有__init__方法函数,通过类名字创建的实例对象为空,切没有初始化:如果有此方法函数,通常作为类的第一个方法函数,有点像C++等语言里的构造函数. class Ca: def __init__(self, v): # 注意前后各两个下划线 self.name = v def pr(self): print "a--->", self.name ia = Ca("Jeapedu") # 本质调用的是__init__方法函数 ia.pr() Ca.
-
巧用Python装饰器 免去调用父类构造函数的麻烦
先看一段代码: 复制代码 代码如下: class T1(threading.Thread): def __init__(self, a, b, c): super(T1, self).__init__() self.a = a self.b = b self.c = c def run(self): print self.a, self.b, self.c 代码定义了一个继承自threading.Thread的class,看这句 super(T1, self).__init__() 也有些人喜欢
-
Python 含参构造函数实例详解
本篇博文主要介绍在Python3中如何构造含参构造函数 样例如下: class MyOdlHttp: username = '' password = '' def __init__(self, username, password): self.username = username self.password = password print(username) my_old_http = MyOdlHttp('admin', '123') 输出结果毫无疑问是 admin\n 123\n 通
-
Python构造函数及解构函数介绍
python 有一个相应的特殊解构器(destructor)方法名为__del__().然而,由于python具有垃圾对象回收机制(靠引用计数),这个函数要直到该实例对象所有的引用都被清除掉后才会被执行.python中的解构器是在实例释放前提供特殊处理功能方法,它们通常没有被实现,因为实例很少被显式释放. 在下面的例子中,我们分别创建(并覆盖) __init__()和__del__()构造器及解构函数,然后,初始化类并给同样的对象很多别名.id()内建函数可用来确定引用同一对象的三个别名.最后一
-
Python中type的构造函数参数含义说明
测试代码如下: 复制代码 代码如下: 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))
-
python中fastapi设置查询参数可选或必选
目录 可选查询参数 必选查询参数 可选和必选参数共存 为可选参数做类型提示 前言: 在fastapi中,我们定义的查询参数是可以设置成:必选参数 or 可选参数. 可选查询参数 z只要给查询参数的默认值设置为None,表示该查询参数是可选参数. from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id: str, q=None)
-
Python中函数及默认参数的定义与调用操作实例分析
本文实例讲述了Python中函数及默认参数的定义与调用操作.分享给大家供大家参考,具体如下: #coding=utf8 ''''' Python中的函数使用小括号调用.函数在调用之前必须先定义. 如果函数中没有return语句,就会自动返回None对象. Python是通过引用调用的.如果函数内对参数的改变会影响到原始对象. 只有可变对象会受此影响,对不可变对象,它的行为类似按值调用. ''' ''''' 定义函数: def function_name([arguments]): "option
-
对Python中type打开文件的方式介绍
这几天在看<利用Python进行数据分析>,在第六章数据加载.存储.与文件格式中遇到个小问题. 在Linux访问文件是用:!cat ch06/ex1.csv 在Windows命令行中使用:!type ch06\ex1.csv 需要作说明的是: 1.Windows与Linux不同的是win用的"\"添加子目录,而Linux使用"/"添加: 2.win下也可以使用绝对路径进行访问,在所在目录下安如图操作方式进行复制,此时需加引号进行使用:!type &quo
-
对python中使用requests模块参数编码的不同处理方法
python中使用requests模块http请求时,发现中文参数不会自动的URL编码,并且没有找到类似urllib (python3)模块中urllib.parse.quote("中文")手动URL编码的方法.研究了半天发现requests模块对中文参数有3种不同的处理方式. 一.requests模块自动URL编码参数 要使参数自动URL编码,需要将请求参数以字典的形式定义,如下demo: import requests proxy = {"http":"
-
基于Python 中函数的 收集参数 机制
定义函数的时候,在参数前加了一个 * 号,函数可以接收零个或多个值作为参数.返回结果是一个元组. 传递零个参数时函数并不报错,而是返回一个空元组.但以上这种方法也有局限性,它不能收集关键字参数. 对关键字参数进行收集的另一种 收集参数 机制:使用两个星号 ( ** ) ,用法同上.最后返回一个以参数名为键.参数值为键值的字典. * 和 ** 是可以一起使用的,返回特定的结果. 参数收集的用处之一是使我们编写函数时不用头疼将 N 多个参数都塞在一个括号里,既美观又省事.用处之二便是: * :可以将
-
关于python中readlines函数的参数hint的相关知识总结
readlines的帮助信息 >>> fr=open('readme.txt') >>> help(fr.readlines) Help on built-in function readlines: readlines(hint=-1, /) method of _io.TextIOWrapper instance Return a list of lines from the stream. hint can be specified to control the
-
Python中np.random.randint()参数详解及用法实例
目录 可实现功能: np.random.randint() 根据参数中所指定的范围生成随机 整数. 参数 一.基础用法 二.高级用法 总结 可实现功能: 1.随机生成一个整数. 2.随机生成任意范围内的一个整数. 3.随机生成指定长度的整数组 4.随机生成指定长度的任意范围的整数组 5.随机生成指定长度的多维整数组 6.随机生成指定长度的任意范围的多维整数组 np.random.randint() 根据参数中所指定的范围生成随机 整数. numpy.random.randint(low, hig
-
简单谈谈Python中函数的可变参数
前言 在Python中定义函数,可以用必选参数.默认参数.可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数.默认参数.可变参数和关键字参数. 可变参数( * ) 可变参数,顾名思义,它的参数是可变的,比如列表.字典等.如果我们需要函数处理可变数量参数的时候,就可以使用可变参数. 我们在查看很多Python源码时,经常会看到 某函数(*参数1, **参数2)这样的函数定义,这个*参数和**参数就是可变参数,一时会让人有点费解.其实只要把函
-
Python中的命令行参数解析工具之docopt详解
前言 docopt 是一个开源的库,代码地址:https://github.com/docopt/docopt.它在 README 中就已经做了详细的介绍,并且还附带了很多例子可供学习,这篇文章也是翻译一下 README 中内容-- docopt 最大的特点在于不用考虑如何解析命令行参数,而是当你把心中想要的格式按照一定的规则写出来后,解析也就完成了. docopt的安装 docopt有很多种版本,分别支持不同的语言,最简答的docopt支持python脚本,docopt.java支持java脚
随机推荐
- 利用VBS实现显示系统服务列表
- 关于Vue背景图打包之后访问路径错误问题的解决
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- JavaScript的null和undefined区别示例介绍
- Node.js中调用mysql存储过程示例
- 建立动态的WML站点(一)
- python win32 简单操作方法
- C#中DataGridView的样式
- 探讨方法的重写(覆载)详解
- JS继承用法实例分析
- Javascript农历与公历相互转换的简单实例
- JavaScript常用本地对象小结
- 为Python程序添加图形化界面的教程
- JavaScript中数组Array.sort()排序方法详解
- 爆强的300句经典山寨语录(全)
- Powershell中请求WebServices并以JSON格式输出结果
- C# 无边框窗体之窗体移动实现代码
- js让弹出新窗口居中显示的脚本
- 深入C++中struct与class的区别分析
- Android使用RSA加密和解密的示例代码