list vs UserList和dict vs UserDict

林肯

编码这一天,对于子类化,上面的哪一个是推荐和推荐的(在Python 2和3中都是推荐的)?

我读了UserListUserDict过去已经出台,因为listdict不能被继承,但由于这是不是一个问题了,是不是鼓励使用它们?

马丁·彼得斯(Martijn Pieters)

根据您的用例,这些天你最好要么子类listdict直接,或者你也可以继承collections.MutableSequencecollections. MutableMapping; 这些选项除了使用User*对象外。

这些User*对象已被移至collectionsPython 3中模块。但是使用Python 2 stdlib中的代码的任何代码都已被collections.abc抽象基类替换甚至在Python 2,UserListUserDict被增强的collections.*实现方式中,添加方法listdict提供超出了基本接口。

这些collections类使子类变得更清晰,以使其成为完整的实现,并且还允许您实现较小的子集(例如collections.Mapping,实现只读映射或collections.Sequence类似元组的对象)。

User*当您还需要实现基本接口以外的所有功能时,应使用这些实现。例如,如果您需要像添加一样支持加法,排序,反转和计数list

对于其他任何事情,使用collections抽象基类作为基础几乎总是更好内置类型针对速度进行了优化,并且不是子类友好的。例如,您将需要覆盖list通常list返回值的几乎所有方法,以确保返回您的子类。

仅当您需要构建坚持使用listdict对象的代码(通过测试使用isinstance())时,才可以考虑将类型子类化。这就是为什么collections.OrderedDict使用的子类dict

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Groovy中的“ vs”,“ vs”,“ vs”和“ vs”。何时使用什么?

来自分类Dev

IEnumerable <> vs List <>作为参数

来自分类Dev

所有vs和AND任何vs或

来自分类Dev

Casting list of objects to List vs IList

来自分类Dev

NodeMCU和VS代码

来自分类Dev

SSH vs /和密码

来自分类Dev

python中的OrderedDict vs Dict

来自分类Dev

Surprising results with Python timeit: Counter() vs defaultdict() vs dict()

来自分类Dev

Python timeit令人惊讶的结果:Counter()vs defaultdict()vs dict()

来自分类Dev

std :: vector :: insert vs std :: list :: operator []

来自分类Dev

Hibernate.initialize(list)vs setFetchMode

来自分类Dev

使用“。” vs“->”的指针和结构

来自分类Dev

才能搜索-狭窄vs和

来自分类Dev

使用 ”。” vs“->”的指针和结构

来自分类Dev

JSF和jQuery vs Primefaces

来自分类Dev

虚空和cout vs int

来自分类Dev

VS 2017 和 Resharper 颜色

来自分类Dev

vs和vs代码之间的程序目录差异

来自分类Dev

JOIN vs UNION vs IN()-大表和许多WHERE条件

来自分类Dev

React props vs redux vs hooks 和 context api

来自分类Dev

Angular:用于switch vs dict查找

来自分类Dev

defaultdict vs dict元素初始化

来自分类Dev

懒惰vs vs

来自分类Dev

承诺vs反应VS?

来自分类Dev

rdbuf vs getline vs“ >>”

来自分类Dev

#if vs #ifndef vs #ifdef

来自分类Dev

存在Vs IN Vs =

来自分类Dev

如何在VS 2019,VS 2017和VS 2015中进行简单的VS扩展安装并正常工作?

来自分类Dev

检查value是否是给定数量的值之一-set vs. tuple vs. list