为什么类需要定义__iter__()返回self,以获取类的迭代器?
class MyClass:
def __init__(self):
self.state = 0
def __next__(self):
self.state += 1
if self.state > 4:
raise StopIteration
return self.state
myObj = MyClass()
for i in myObj:
print(i)
Run Code Online (Sandbox Code Playgroud)
控制台日志:
Traceback (most recent call last):
for i in myObj:
TypeError: 'MyClass' object is not iterable
Run Code Online (Sandbox Code Playgroud)
迭代器是具有next(Python 2)或
__next__(Python 3)方法的对象.
添加以下内容的任务:
def __iter__(self):
return self
Run Code Online (Sandbox Code Playgroud)
是返回定义方法的迭代器或类的对象__next__().
但是,当MyClass在myObj = MyClass()行中实例化时,不是返回MyClass对象(定义__next__()方法)的任务,而是由__new__()MyClass实例化了吗?
类定义__next__()方法的对象不是自己的迭代器吗?
我已经研究了问题__iter__方法中返回self的用途是什么?并构建一个基本的Python迭代器,但我仍然无法理解 …