python迭代器问题求助
在小甲鱼视频中说的class Fib(object):
def __init__(self):
self.a, self.b = 0, 1
def __iter__(self):
return self
这个魔法方法__iter__没有看懂,为什么返回的是self,而不是iter(self)呢。 iter(self)会调用self.__iter__(),这样就死循环了 __iter__() 方法返回迭代器,当调用 iter(self) 就会调用 self.__iter__(),会形成死循环 zltzlt 发表于 2020-3-23 13:06
__iter__() 方法返回迭代器,当调用 iter(self) 就会调用 self.__iter__(),会形成死循环
但是这个方法在类中重写了,结果只是放回实例对象本身。这里很不理解这个,为什么是会返回迭代器呢。 18508410033 发表于 2020-3-23 21:07
但是这个方法在类中重写了,结果只是放回实例对象本身。这里很不理解这个,为什么是会返回迭代器呢。
因为 self 就是迭代器啊 zltzlt 发表于 2020-3-24 08:05
因为 self 就是迭代器啊
是类中定义了__iter__ 和 __next__他的实例对象就是迭代器吗 18508410033 发表于 2020-3-25 21:29
是类中定义了__iter__ 和 __next__他的实例对象就是迭代器吗
是的,只要定义了 __next__ 的方法就是迭代器,就有必要重写 __iter__ 方法,返回 self
页:
[1]