导语:
本文主要介绍了关于Python中UserDict、UserString、UserList有用吗?的相关知识,包括中生元有用吗,以及python私有属性和方法的访问方式这些编程知识,希望对大家有参考作用。
继承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如何判断进程是否被杀死?12/06
- ♥ Python如何清理常驻字符串01/03
- ♥ python shell脚本中有哪些功能?12/21
- ♥ python如何判断一个文件的行数12/03
- ♥ Python 初学者必读的赋值运算符12/09
- ♥ python包在哪里12/09
内容反馈