关于Python3的namedtuple问题
初次看到namedtuple,就发现此类和普通的非内置类有点不同,正常的类使用时即是实例化了,但namedtuple并不是,而是先内部先创建了一个自定义的特殊类:
1 1 from collections import defaultdict, namedtuple 2 2 3 3 4 4 A = namedtuple('B', ['name1', 'name2']) 5 5 d_dict = defaultdict(list) 6 6 C = A('4', 'diamonds') 7 7 8 8 print(type(A)) 9 9 print(A.__mro__) 10 10 print(isinstance(A, type)) 11 11 print("-" * 10) 12 12 13 13 14 14 print(type(d_dict)) 15 15 print(isinstance(d_dict, defaultdict)) 16 16 print("-" * 10) 17 17 18 18 19 19 print(type(C)) 20 20 print(isinstance(C, A)) 21 22 23 Out : 24 <class 'type'> 25 (<class '__main__.B'>, <class 'tuple'>, <class 'object'>) 26 True 27 ---------- 28 <class 'collections.defaultdict'> 29 True 30 ---------- 31 <class '__main__.B'> 32 True
像一般的类型比如说上面的defaultdict,或者自己定义一个类:
class myClass:passcls_1 = myClass() print(type(myClass)) print(myClass.__mro__)Out:<class 'type'>(<class '__main__.myClass'>, <class 'object'>)
一般定义过后,直接使用 object_name = class_name()调用构造方法就实例化了,但namedtuple第一步即:
A = namedtuple('B', ['name1', 'name2'])
其实并没有完整的实例化(创建一个真正的namedtuple对象), 而是创建了一个带属性的tuple的自定义子类, 访问名称为A,内部名称为__main__.B(也就是type的实例,直接继承自tuple),然后经过
C = A('4', 'diamonds')
才真正的实例化了(创建了__main__.B(访问名称为A)的实例化对象)。
这里还同时引起了另一个问题那就是type和object的关系,之后找到一个帖子总结的不错:
https://blog.csdn.net/andybegin/article/details/80775773
转载于:https://www.cnblogs.com/flincasnote/p/9973703.html
关于Python3的namedtuple问题相关推荐
- python3 namedtuple_你不能低估的Python数据结构Namedtuple(二)
上篇你不能低估的Python数据结构Namedtuple(一)讲了namedtuple的一些基本用法,本篇继续. namedtuples和数据类(Data Class)之间有什么区别? 功能 在Pyt ...
- [转载] Python3接口自动化框架:第三方openpyxl库读取excel之命名元组namedtuple承载数据
参考链接: Python中的命名元组Namedtuple 背景:python自动化测试框架中,不管是UI还是api,都逃脱不掉数据驱动,除去一些框架的数据驱动方式,最直接的就是我们的excel测试用例 ...
- Python3中collections.OrderedDict介绍
Python3中的collections模块实现了特定目标的容器,以提供Python标准内建容器dict.list.set和tuple的替代选择,包括namedtuple.deque.ChainMap ...
- python参数类型限定_python限定方法参数类型、返回值类型、变量类型等|python3教程|python入门|python教程...
https://www.xin3721.com/eschool/python.html typing模块的作用 自python3.5开始,PEP484为python引入了类型注解(type hints ...
- python3 collections模块_Python3之内建模块collections
collections是python内建的一个集合模块,提供了许多有用的集合类. namedtuple 我们知道tuple可以表示不可变集合,例如,一个点的二维坐标可以表示成 >>> ...
- python3和Python2的区别
print函数:(Python3中print为一个函数,必须用括号括起来:Python2中print为class) Python 2 的 print 声明已经被 print() 函数取代了,这意味着我 ...
- python3.x与python2.x的区别汇总
python3.x与python2.7.x都是比较流行的版本,虽然建议现在的初学者开始学习python3.x的版本,但是还有很多的工程使用的是python2.7.x版本.观看代码的时候难免会出现一些问 ...
- python3.8 新特性
Python 3.8是Python语言的最新版本,它适合用于编写脚本.自动化以及机器学习和Web开发等各种任务.现在Python 3.8已经进入官方的beta阶段,这个版本带来了许多语法改变.内存共享 ...
- python3 限定方法参数 返回值 变量 类型
typing模块的作用 自python3.5开始,PEP484为python引入了类型注解(type hints) 类型检查,防止运行时出现参数和返回值类型.变量类型不符合. 作为开发文档附加说明,方 ...
- python3 x和python2 x区别_Python3.x和Python2.x的区别
这个星期开始学习Python了,因为看的书都是基于Python2.x,而且我安装的是Python3.1,所以书上写的地方好多都不适用于Python3.1,特意在Google上search了一下3.x和 ...
最新文章
- 基于OpenCV实战:3步实现图像降噪
- python定义全局变量
- 《职场》笔记20061119
- python函数def_python def 函数
- zanePerfor 一款完整,高性能,高可用的前端性能监控系统,不要错过
- rds本地库到rds恢复_华为云RDS备份导入到本地
- .NET I/O 学习笔记:文件的读和写
- java io流printstream_java IO流:打印流 PrintStream
- 第六章 PX4-Sensors解析
- java excel row遍历空_Java poi读取,写入Excel,处理row和cell可能为空的情况
- JS 逆向 --- 过无限debugge、hook、js混淆还原、控制流混淆
- 在java中使用ffmpeg将amr格式的语音转为mp3格式
- 中国水雾化铁粉行业市场供需与战略研究报告
- 编程语言也有中年危机,Java 为何一直被唱衰?
- Oracle Study之案例--安装Oracle内核参数配置
- 中班音乐会跳舞的机器人_中班音乐律动机器人
- 微信公众号的html5界面用什么软件,微信公众号编辑排版用什么软件(推荐这4款编辑器)...
- 将分类图像转换为ERDAS可识别的专题图像(Continuous to Thematic)
- 大数据就业方向_如今大数据行业就业前景如何?
- 【Elasticsearch】利用kibana调整索引mapping结构