Pau*_*aul 12 python dictionary types
偶尔人们会在Python中引用"类X"对象.例:
data_iter_maker - 一个零参数可调用,它返回一个类似于dict的数据对象的迭代器.
"dict-like"是否有一个精确的定义,如果有,它是什么?它是一个x可以像字典一样被索引的对象:x[a],哪里a是可以清洗的?在这种情况下,一个namedtuple可能不会被视为类似dict,因为你不能使用像x['a'](我最后检查你必须写x.a)的表达式索引.但另一方面,namedtuples在功能上与dicts相似,我不知道该怎么想.
讽刺的是,我很想猜测"dict-like"的意思是"一个类似的对象,足以说明我的代码会产生相同的答案,就像你提交了一个语义上相同的dict对象一样".换句话说,"运行函数并自己找出你的论点是否像dict一样!"
更一般地说,是一个类似X的对象,它实现与X相同的接口?
Python使用' duck-typing ':
"如果它看起来像鸭子,像鸭子一样嘎嘎叫,它一定是鸭子."
或者,或许,"如果它看起来像一只鸭子,像鸭子一样嘎嘎叫,它就足够接近一只鸭子来对待它." 显然第一听起来更好.这与"更容易要求宽恕而不是要求许可"的蟒蛇学说密切相关.
甲类似字典的对象是一个工具,其(或模拟)的字典接口. 在相同的概念经常出现对iterables,并经常在numpy的关于"阵列状"(或"array_like")的物体.
实用鸭子打字:
dict_meths = set(dir({}))
# Python3
class A:
pass
default_meths = set(dir(A()))
diff = dict_meths - default_meths
Run Code Online (Sandbox Code Playgroud)
现在diff是:
{'__contains__',
'__delitem__',
'__getitem__',
'__iter__',
'__len__',
'__setitem__',
'clear',
'copy',
'fromkeys',
'get',
'items',
'keys',
'pop',
'popitem',
'setdefault',
'update',
'values'}
Run Code Online (Sandbox Code Playgroud)
当你在类中实现所有这些方法时,你肯定有一个类似dict的对象.如果一些不那么常见的人如update遗失了你,你仍然可能会谈论一个类似dict的对象.比较类似文件的对象.
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |