首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dict_subscript :什么时候调用PyDict_GetItem,什么时候调用cpython?

dict_subscript :什么时候调用PyDict_GetItem,什么时候调用cpython?
EN

Stack Overflow用户
提问于 2010-03-18 23:17:04
回答 1查看 677关注 0票数 1

我正在阅读Python3k的cpython代码,我注意到,只有在调用dict_subscript时才会调用__missing__,但在使用PyDict_GetItem时不会调用。这两个方法之间的区别是什么,以及何时调用它们?如果我传递的PyObject是dict的子类并且有__missing__方法,我怎么能强制使用它,因为PyDict_GetItem不这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-19 06:16:18

观察、猜测等:

在Python 2.x中也发生了同样的情况。

dict_subscript实现了与high_level dict.__getitem__方法等效的方法,因此只要adict[somekey]出现,而不是在Python代码中的赋值的LHS上出现,就会被调用。

PyDict_GetItem是C应用编程接口的一部分。也许这是一个疏忽,因为它还没有更新。

在阅读了PyDict_GetItem开头的可怕评论后,我将改用PyDict_GetItemWithError ;-)

也许你可以做一次C级的my_getitem = getattr(my_dict, '__getitem__'),然后调用它。

也许你可以提出一个错误标签或者在comp.lang.python上询问

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

https://stackoverflow.com/questions/2470928

复制
相关文章

相似问题

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