Xx_Nemesis_xX 发表于 2020-10-7 11:46:08

迭代器中的__iter__()返回值

本帖最后由 Xx_Nemesis_xX 于 2020-10-7 12:00 编辑

小白想问一个简单的问题,
class MyRev:
    def __init__(self,args):
      self.Mylist = list(args)   
      self.Lenlist = len(self.Mylist)

      
    def __iter__(self):
      return self

    def __next__(self):
      self.Lenlist -= 1
      if self.Lenlist < 0:
            raise StopIteration
      return (self.Mylist,self.Lenlist)

请问如果令实例对象
myRev = MyRev("love")

for i in myRev:
        print(i,end="")

('e', 3)('v', 2)('o', 1)('l', 0)

其中的__iter__函数返回的self在哪里体现呢?这个细节点麻烦指点,谢谢~

疾风怪盗 发表于 2020-10-7 11:53:11

本帖最后由 疾风怪盗 于 2020-10-7 11:56 编辑

return 语句下面的代码是不执行的
和break一样

如果你用pycharm之类的IDE,就会发现报错提示了

myRev = Myev("icarus")这个也拼写错了

class MyRev:
    def __init__(self,args):
      self.Mylist = list(args)
      self.Lenlist = len(self.Mylist)


    def __iter__(self):
      return self

    def __next__(self):
      self.Lenlist -= 1
      if self.Lenlist < 0:
            raise StopIteration
      return (self.Mylist,self.Lenlist)



myRev = MyRev("icarus")
for i in myRev:
      print(i,end="")

('s', 5)('u', 4)('r', 3)('a', 2)('c', 1)('i', 0)
Process finished with exit code 0

Xx_Nemesis_xX 发表于 2020-10-7 12:02:15

疾风怪盗 发表于 2020-10-7 11:53
return 语句下面的代码是不执行的
和break一样



感谢指点,顺便问下__iter__()语句的返回值self在哪里体现呢?

疾风怪盗 发表于 2020-10-7 12:06:55

Xx_Nemesis_xX 发表于 2020-10-7 12:02
感谢指点,顺便问下__iter__()语句的返回值self在哪里体现呢?

魔法方法和装饰器,这两块都没学好,感觉挺抽象的,平常也用的不多

看这个解释吧https://blog.csdn.net/will130/article/details/50920501

Xx_Nemesis_xX 发表于 2020-10-7 12:12:56

疾风怪盗 发表于 2020-10-7 12:06
魔法方法和装饰器,这两块都没学好,感觉挺抽象的,平常也用的不多

看这个解释吧https://blog.csdn.ne ...

好的,感谢指点
页: [1]
查看完整版本: 迭代器中的__iter__()返回值