返回介绍

索引迭代:__getitem__

发布于 2024-01-29 22:24:15 字数 618 浏览 0 评论 0 收藏 0

初学者可能不见得马上就能领会这里的技巧,但这些技巧都是非常有用的。for语句的作用是从0到更大的索引值,重复对序列进行索引运算,直到检测到超出边界的异常。因此,__getitem__也可以是Python中一种重载迭代的方式。如果定义了这个方法,for循环每次循环时都会调用类的__getitem__,并持续搭配有更高的偏移值。这是一种“买一送一”的情况:任何会响应索引运算的内置或用户定义的对象,同样会响应迭代。

事实上,这其实是“买一送一”的情况。任何支持for循环的类也会自动支持Python所有迭代环境,而其中多种环境我们已在前几章看过了(参考第14章的其他迭代环境)。例如,成员关系测试in、列表解析、内置函数map、列表和元组赋值运算以及类型构造方法也会自动调用__getitem__(如果定义了的话)。

在实际应用中,这个技巧可用于建立提供序列接口的对象,并新增逻辑到内置的序列类型运算。第31章扩展内置类型时,我们会再谈这个观点。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文