美文网首页
python迭代器

python迭代器

作者: DayBreakL | 来源:发表于2020-05-02 00:30 被阅读0次

    根据自定义一个可迭代器,学习迭代器协议,最简单的迭代器逻辑

    # 迭代器自带__iter__()方法,返回一个迭代器
    # 迭代器协议:
    # 1. 实现了迭代器对象,即对象内部定义一个__iter__()方法
    # 2. 对象实现__next()__方法
    
    class StrDemo():
        def __init__(self,s):
            self.__s=s # 传入一个字符串
            self.__len=len(s) # 记录字符串的长度
            self.__step=0 # 记录访问的下标
    
        def __iter__(self):
            print("调用了__iter__()")
            return self # 返回可迭代对象,自己
    
        def __next__(self): 
            print("调用了__next__()")
            if self.__step>=self.__len:
                raise StopIteration("下标越界")
            else:
                c = self.__s[self.__step]
                self.__step += 1
                return c
    
    # __next__()在什么时候会触发:1.主动调用时,如:print(s.__next__()) 2.调用内置方法next(s)时,会去触发__next__()
    # __iter__()在什么时候会触发:1. iter(s),调用__iter__() 2.遍历可迭代对象时,先调用__iter__()把可迭代对象转为迭代器,如for循环时
    s=StrDemo("123333")
    for i in s:
        print(i)
    

    输出如图:


    相关文章

      网友评论

          本文标题:python迭代器

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