【 在 VincentGe 的大作中提到: 】
: 你实现了一个错误的__iter__方法,它应该返回一个迭代器对象而不是调用__next__。
: 其次,你在实现__next__时使用了yield关键字,这意味着它实际上是一个生成器函数,而不是__next__方法的正确实现。
: next直接返回值就行,不用实现iter
: ...................
您需要再多学习学习基础知识,:)
生成器函数本身就是一种特殊的迭代器。
我大概知道怎么回事了, 只需要把抛异常的两行代码屏蔽掉就行了。
python的实现, 大概是, for in 使用了迭代函数本身会反复调用迭代函数。
from abc import ABC
class TestForin(ABC):
def __init__(self):
self.for_in = range(1,5)
pass
def __iter__(self):
return self.__next__()
def __next__(self):
for i in self.for_in:
yield i
#else:
# raise StopIteration()
if __name__ == "__main__":
f = TestForin()
for x in f:
print(x)
--
修改:poggy FROM 124.126.0.*
FROM 124.126.0.*