__iter__ 和 __getitem__

1、__iter__

如果一个类想被用于for ... in循环,类似list或tuple那样,就必须实现一个__iter__()方法,该方法返回一个迭代对象,然后,Python的for循环就会不断调用该迭代对象的__next__()方法拿到循环的下一个值,直到遇到StopIteration错误时退出循环。

class Fid:

    def __init__(self):

            self._a, self._b =0, 1

    def __iter__(self):

            # 实例本身就是迭代对象,故返回自己

            return self

    def __next__(self):

            self._a, self._b =self._b, self._a +self._b

            if self._a >10000:

                #退出循环

                raise StopIteration

            return self._a

Fid就可以使用for in 循环,

for n in Fid():

    print(n)

2、__getitem__

如果一个对象希望像list一样通过下标获取元素,则需实现__getitem__()即可

class GetItem:

    def __getitem__(self, item):

            a, b =1, 1

            for x in range(item):

                a, b = b, a + b

            return a

打印第二个元素

getitem = GetItem()

print(getitem[1])

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,801评论 0 8
  • 今天总结一下搜到的一些知识:感谢 卷积神经网络(CNN)中的一些特殊层 Batch Normalization D...
    Zz鱼丸阅读 2,488评论 0 1
  • Markdown 语法说明 (简体中文版) MacBook的钥匙串 在这里我们可以查询开发者各种证书、以及mac中...
    笨笨编程阅读 573评论 0 11
  • 那天在街上 遇到了我多年不见的一个小学同学 他第一眼认出了我 和我打招呼 看着他熟悉的模样却喊不出 他的名字 是一...
    吻章阅读 182评论 0 1
  • 以前不知为何常常喜欢化妆,买很多不适合自己的衣服,所有的关注点都聚焦在自己的缺陷和好看的衣服本身,而自己和衣...
    田沅阅读 524评论 2 3