视频中的company不是可迭代对象
来源:9-2 什么是迭代器和可迭代对象

weixin_慕九州8177213
2020-05-26
from collections.abc import Iterable, Iterator
class Company(object):
def __init__(self, employee_list):
self.employee = employee_list
def __iter__(self):
return MyIterator(self.employee)
class MyIterator(Iterator):
def __init__(self, employee_list):
self.iter_list = employee_list
self.index = 0
def __next__(self):
# 真正返回迭代值的逻辑
try:
word = self.iter_list[self.index]
except IndexError:
raise StopIteration
self.index += 1
return word
if __name__ == '__main__':
company = Company(["job", "jane", "steve"])
# my_iter = iter(company)
while True:
try:
print(next(company))
except StopIteration:
break
视频中最后证实实现可迭代对象company时,实际遍历的是通过iter函数转换之后的my_iter;我试着使用next(company)来获取employee的值,但是报了company不是可迭代对象的错误;我觉得既然company实现了迭代器协议,那么应该使用next(company)而不是next(my_iter),因为my_iter是经过iter函数转换之后的,如果使用my_iter进行遍历的话,那么只需要实现__getitem__;以上是我的代码,我不知道哪里错了,希望老师看到能回复一下
写回答
1回答
-
慕无忌5445318
2020-06-30
身身身身身身身
00
相似问题