我正在尝试澄清对__iter__()
和__next__()
方法的使用的困惑。这是阅读中提供的示例:
创建一个返回数字(从1开始)的迭代器,每个序列将增加一个(返回1,2,3,4,5等):
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
我试图在这里学习一般模式,并被myiter = iter(myclass)
所迷惑。首先创建对象myclass
,该对象属于类MyNumbers
。这我明白。
问:但是定义myiter
的方式是怎么回事?这是一个新对象myiter
,其设置为等于我没有看到的iter
函数,并且包含整个类作为参数?究竟如何运作?该读物进一步建议这些迭代方法类似于__init__
,但我看不到这种关系。解释器如何准确地执行此代码?
非常感谢您的时间和帮助。