我正在通过《Beginning Python: From Novice to Professional 》一书学习 python ,我对讨论的部分感到困惑iterators
。本节有一个例子:
>>> Class Fibs:
... def __init__(self):
... self.a = 0
... self.b = 1
... def __next__(self):
... self.a, self.b = self.b, self.a + self.b
... return self.a
... def __iter__(self):
... return self
...
>>> fibs = Fibs()
>>> for f in fibs:
... if f > 1000:
... print(f)
... break
...
1597
老实说,我只知道那fibs
是一个带有方法__next__
和的对象__iter__
,但不知道循环的每一步会发生什么。我做了一个测试:
>>> isinstance(f, Fibs)
False
>>> f is fibs
False
>>> isinstance(f, int)
True
>>> fibs.a
1597
这让我更加困惑!f is fibs
为什么是的布尔值False
?以及为什么fibs.a
在循环执行后变成1597?(该方法是否在__next__
循环中自动调用?)提前谢谢。