【 在 VincentGe 的大作中提到: 】
: 你实现了一个错误的__iter__方法,它应该返回一个迭代器对象而不是调用__next__。
: 其次,你在实现__next__时使用了yield关键字,这意味着它实际上是一个生成器函数,而不是__next__方法的正确实现。
: next直接返回值就行,不用实现iter
: ...................
我到这里是来讨论问题的, 我一开始标题就告知, 在讨论 for in的实现问题,
__iter__ 当然可以返回迭代器对象, 而且, 返回迭代器是for in的大多数实现,
但是, 如果你仔细看规范, for 循环并不要求是迭代器对象,
而是更宽泛的, Iterable, 而且, 使用生成函数, 自由度更高。
--
FROM 124.126.0.*