继承dict还是Collections.UserDict

文档说了个啥

文档 好像说了什么但没完全说,特别是这句,对这个类的需求已部分由直接创建 dict 的子类的功能所替代;不过,这个类处理起来更容易,因为底层的字典可以作为属性来访问。 前半句告诉我们这个类用处不大,后半句告诉我们它还有点用但是我对其中的因果关系感到疑惑,底层的字典作为属性为什么会容易处理,dict 里底层的字典不也可以随便拿到吗?

总结一下,这块文档编辑者是个谜语人。(谜语人能不能guna~)

懂哥说了个啥

谷歌输入 how to use collections.UserDict,SO里相关的提问不多且都在多年之前,答案更是良莠不齐。有的说UserDict好久没更新啦不要用啦直接继承dict就完事,有的说继承Userdict的子类的实例用isinstance(o, dict)判断返回False这是不好的巴拉巴拉(这不是废话吗,UserDict都不是dict的子类)。当然也有真正的懂哥,像 这个问题 的最后一个回答,不过没人顶我是没想到的,所以我一开始也没看到呜呜呜。

百度输入 python userdict,你会浪费你人生中的300秒。也不是,我造谣了,历经千辛万苦我在 知乎这篇文章 下面的评论找到了方向,是的,《Fluent Python》 我来了!

书上说了个啥

Chapter 3: Dictionaries and SetsSubclassing UserDict 小节讲到:

The main reason why it’s preferable to subclass from UserDict rather than from dict
is that the built-in has some implementation shortcuts that end up forcing us to override
methods that we can just inherit from UserDict with no problems.3

点击注脚跳到第十二章,开幕雷击: Subclassing Built-In Types Is Tricky
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

讲的比较清楚了,dddd,如果还要我总结一下就是
在这里插入图片描述
重写内置方法就继承collections.User*类,不然就直接继承内置类。

好了xdm,现在你也是二择的神了!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值