视频中的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 
相似问题