[英]Python - inner workings of __iter__
我有以下 class:
class RandomNumbers:
def __init__(self, length, *, range_min=0, range_max=10):
self.length = length
self.range_min = range_min
self.range_max = range_max
self.i = 0
def __len__(self):
return self.length
def __next__(self):
if self.i >= self.length:
raise StopIteration
number = random.randint(self.range_min, self.range_max)
self.i += 1
return number
def __iter__(self):
print("I was called")
return self
這允許我使用 for 循環:
for number in RandomNumbers(10):
print(number)
這行得通。 當我注釋掉__iter__
時,出現以下錯誤:
TypeError: 'RandomNumbers' object is not iterable
好的,到目前為止一切順利。 我知道我需要__iter__
方法,但是當它實際上只返回self
時為什么需要它?
您的 for 循環可以重寫為這個有點等效的代碼
it = iter(RandomNumbers(10))
while True:
try:
number = next(it)
except StopIteration:
break
else:
# Body of the for loop
print(number)
你的self
需要實現__iter__
方法來用迭代器響應iter()
__next__
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.