for 循环确实调用了 __next__(),但不是你显式写的,而是 Python 解释器在背后自动调用的。
for i in c:
print(i)
Python 实际上在背后做了这些事:
_iter = iter(c) # 调用 c.__iter__(),返回迭代器 while True: try: i = next(_iter) # 调用 _iter.__next__() except StopIteration: break print(i)
你写的代码。 Python 实际做的事
`for i in c:` `_iter = iter(c)`
隐含循环体。 `i = next(_iter)` ➜ 调用 `__next__()`
结束循环 捕获 `StopIteration` 异常
for 循环会自动调用 iter() 和 __next__(),只是你没看到而已。