如何解决Python 如何散列 itertools.count()?
我正在尝试了解 hash(itertools.count(x,y))
背后的基本机制。
我不习惯深入研究 cpython 实现,但我注意到 itertoolsmodule.c
中的 static PyTypeObject count_type
has 0
for tp_hash
。
我假设这意味着它没有在 C 中实现 hash
。那么,如何处理它?是否有用于实现 itertools.count
的 C 绑定 __hash__
的 Python 对象?
另一方面,幕后发生了什么
itertools.count(0,5) != itertools.count(0,5)
解决方法
它只是从 __hash__
继承了默认的基于身份的 __eq__
和 object
。
引用 tp_hash
的 docs:
继承:
组:tp_hash、tp_richcompare
该字段与 tp_richcompare 一起被子类型继承:当子类型的 tp_richcompare 和 tp_hash 都为 NULL 时,子类型同时继承 tp_richcompare 和 tp_hash。
由于tp_hash
和tp_richcompare
都静态初始化为0
,PyType_Ready
将从基类中copy those fields,默认为object
.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。