美文网首页
__iter__ 和 __getitem__

__iter__ 和 __getitem__

作者: hie | 来源:发表于2018-11-20 16:19 被阅读0次

    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])

    相关文章

      网友评论

          本文标题:__iter__ 和 __getitem__

          本文链接:https://www.haomeiwen.com/subject/tnhtqqtx.html