python的userlist_Python中UserDict、UserString、UserList有用吗?
一个继承Python内建结构的坑儿。从Python 2.2开始,Python支持继承Python内建结构,如list、dict。为了简化项目内容,直接继承了dict,但是结果和预期不一样。现在来好好研究研究:
举个例子:In : class NewDict(dict):
...: def __getitem__(self, key):
...: return 42
...:
In : d = NewDict(a=1)
In : d
Out: {'a': 42}
In : d2 = {}
In : d2.update(d)
In : d2
Out: {'a': 1}
也就是说NewDict的__getitem__方法被dict.update给忽略了。In : from UserDict import UserDict
In : class NewDict(UserDict):
...: def __getitem__(self, key):
...: return 42
...:
In : d = NewDict(a=1)
In : d['b'] =2
In : d
Out: {'a': 1, 'b': 2}
In : d['b']
Out: 42
In : d2 = {}
In : d2.update(d)
In : d2
Out: {'a': 42, 'b': 42}
这才是对的呀。
后来在PyPy的文档中发现了原因,也就是这种C实现的结构的内建方法大部分会忽略重载的那个方法。
之前以为UserDict这样的类是历史遗留问题,现在才知道是有原因的。原来UserDict、UserString、UserList这样的模块是非常必要的。
python的userlist_Python中UserDict、UserString、UserList有用吗?相关推荐
- Python中 5个非常有用的单行代码
Python中 5个非常有用的单行代码 1. 什么是单行代码? 2. 了解和使用单行代码的好处 3. 5个单行代码示例 参考 作为开发人员,你想提高生产力吗?掌握这 5 个 Python 一行代码,你 ...
- 从15000个Python开源项目中精选的Top30,Github平均star为3707,赶紧收藏!
翻译 | AI科技大本营(ID:rgznai100) 参与 | SuiSui 继推出2017年机器学习开源项目Top 30榜单后,Mybridge AI又推出了一个Python开源项目Top 30榜单 ...
- 收藏!15000个Python开源项目中精选Top30!
来源:授权自AI科技大本营(ID:rgznai100) 本文长度为1700字,建议阅读6分钟 本文基于项目质量.用户参与度以及其他因素为你列出Python开源项目Top 30,建议收藏. 继推出201 ...
- python定义类()中写object和不写的区别
python定义类()中写object和不写的区别 这里需要说明一下: python3中,类定义默认继承object,所以写不写没有区别 但在python2中,并不是这样 所以此内容是针对python ...
- python读取文件中的数据为二维数组变量_Numpy 多维数据数组的实现
numpy包(模块)几乎总是用于Python中的数值计算.这个软件包为Python提供了高性能的向量.矩阵.张量数据类型.它是在C和Fortran中创建的,因此当计算被矢量化(用矩阵和矢量表示操作)时 ...
- 实际上,Python 3.3中新的“ yield from”语法的主要用途是什么?
本文翻译自:In practice, what are the main uses for the new "yield from" syntax in Python 3.3? I ...
- python文件读取输出-Python 读写文件中数据
1 需求 在文件 h264.txt 中的数据如图1,读入该文件中的数据,然后将第1列的地址删除,然后将数据输出到h264_out.txt中: 图1 h264.txt 数据截图 图2 输出文件 h264 ...
- python人工智能-Python在人工智能中的作用
原标题:Python在人工智能中的作用 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 谷歌的AI击败了一位围棋大师,是一种衡量人工智能突然的快速发展的方 ...
- python args kwargs_Python中的args和kwargs
有时,你会看到python中定义函数的时候带有两个奇怪的参数:*args.**kwargs.如果你曾经想知道它们是干什么的,或者想知道你的IDE为什么在main()函数中定义它们,那么本文可以帮助到你 ...
最新文章
- RNA-seq【分析记录】
- php 带下划线的函数,[宜配屋]听图阁
- 一口气拿了9家公司的offer,年薪50W
- HTML学习笔记(三)样式CSS
- 线程的几种状态_拜托:不要再问我线程有多少种状态了
- java finally的作用_java中finally关键字的特点和作用是什么
- ASP.NET 2.0运行时简要分析
- Spark _13_二次排序问题
- Netty私有栈协议
- classcastexception异常_Java程序员必备:异常的十个关键知识点
- 计算机cpu图片,电脑处理器天梯图2019
- python单位根检验看结果_时间序列的ADF检验(单位根检验)
- 直播带货系统的六大热门功能模块概述
- 1007 Problem H	A+B 输入输出练习VIII
- QT应用编程: 域名解析(域名转IP)
- freeswitch如何判断挂机方
- Nginx关闭后,网页仍能访问(缓存问题)
- 2、ThreadX 操作系统
- Java运算符(1)
- 深度学习笔记(三):BatchNorm(BN)层
热门文章
- 在div中显示html_HTML基础知识之DIV
- Qt学习笔记之2D绘图
- 关于Verilog的可综合性
- 在ZC702上运行Linux(4)-编译和使用U-Boot Linux
- 洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA
- 移除单链表的倒数第N个节点
- 记Booking.com iOS开发岗位线上笔试
- Javascript基础系列之(五)条件语句(比较操作符)
- C++宏定义中#与##的妙用
- href=#与javascript:void(0)的区别