返回介绍

习题解答

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

1.类可以通过定义(或继承)__getitem__或__iter__来支持迭代。在所有的迭代环境中,Python首先尝试使用__iter__(它返回支持迭代协议的一个对象,该对象带有一个__next__方法):如果在继承搜索中没有找到__iter__,Python退而求其次地用__getitem__索引方法(它可以重复地调用,使用连续较高的索引)。

2.__str__和__repr__方法实现对象打印显示。前者由print和str内置函数调用;后者由print和str调用(如果没有__str__的话),并且总是由repr内置函数、交互式响应和嵌套的出现。也就是说,__repr__随处可用,只是当定义了一个__str__的时候除外。__str__通常用于用户友好的显示,__repr__给出额外的细节,或者对象的编码形式。

3.分片由__getitem__索引方法捕获:它用一个分片对象调用;而不是一个简单的索引。在Python 2.6中,__getslice__(在Python 3.0中删除了)也可以使用。

4.原处加法首先尝试__iadd__,其次用__add__赋值。同样的模式对于所有的二进制运算也是如此。__radd__方法对于右端相加也可用。

5.当一个类自然地匹配的或者需要模拟一个内置类型接口的时候。例如,集合可能模拟序列或映射接口。如果表达式运算符没有自然地映射对象的时候,我们通常不应该实现表达式运算符,而应该使用常规命名的方法。

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

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

发布评论

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