首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中,“迪克样”是什么意思?

在Python中,“迪克样”是什么意思?
EN

Stack Overflow用户
提问于 2015-11-21 16:11:46
回答 2查看 2.9K关注 0票数 14

有时,人们会在Python中引用“X类”对象。Example:

data_iter_maker -一个零参数可调用的,它返回一个迭代器在类似于数据块的对象.

“迪克”有一个精确的定义吗?如果是的话,它是什么?它是否是一个可以像字典一样索引的对象xx[a],其中a是一个可理解的对象?在这种情况下,namedtuple可能不被认为是dict样的,因为您不能使用像x['a']这样的表达式进行索引(上次我检查过您必须编写x.a)。但另一方面,名词组在功能上非常类似于词典,所以我不知道该怎么想。

愤世嫉俗的是,我很想猜测" dict -like“意思是”一个足够相似的对象,以至于我的代码会产生相同的答案,就像您提交了一个语义上等价的dict对象一样“。换句话说,“运行这个函数,并为自己找出你的论点是否是切分的!”

更普遍的情况是,X类对象是否实现与X相同的接口?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-21 16:48:23

Python使用'duck-typing':

“如果它看起来像鸭子,叫起来像鸭子,那它一定是鸭子。”

或者,“如果它看起来像鸭子,嘎嘎叫的像鸭子,那么它就足够接近鸭子,把它当作鸭子对待。”很明显,第一个听起来更好。这与"Easier to Ask for Forgiveness than to ask for Permission"的python理论密切相关。

一个类似于对象是one which implements (or emulates) the dictionary interface. The same concept often comes up for iterables,通常在like') objects中。

票数 8
EN

Stack Overflow用户

发布于 2015-11-21 16:53:56

实用鸭子打字:

代码语言:javascript
复制
dict_meths = set(dir({}))

# Python3
class A:
    pass

default_meths = set(dir(A()))

diff = dict_meths - default_meths

现在,diff是:

代码语言:javascript
复制
{'__contains__',
 '__delitem__',
 '__getitem__',
 '__iter__',
 '__len__',
 '__setitem__',
 'clear',
 'copy',
 'fromkeys',
 'get',
 'items',
 'keys',
 'pop',
 'popitem',
 'setdefault',
 'update',
 'values'}

当您在类中实现所有这些方法时,您肯定有一个类似于数据的对象。如果缺少一些不太常见的对象(如update ),您可能还会谈论一个类似于dict的对象。比较file-like objects

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33845604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档