不理解__iter__和__next__的概念
class MyList(object): def __init__(self, num): self.data = num def __iter__(self): return MyListIterator(self.data) class MyListIterator(object): def __init__(self, data): self.data = data self.now = 0 def __iter__(self): return self def __next__(self): while self.now < self.data: self.now += 1 return self.now - 1 raise StopIteration my_list = MyList(5) print(type(my_list)) my_list_iter = my_list.__iter__() print(type(my_list_iter)) print(my_list_iter.__next__()) print(next(my_list_iter)) print(next(my_list_iter)) print(next(my_list_iter)) print(next(my_list_iter))
在其他答疑里看到的这个例子。
问题一、在class MyListIterator里已经用过__iter__了,还要返回到class MyList里的__iter__里,这样不会有问题或错误吗?这样意义何在?能看出什么东西吗?
问题二、视频里的示例连__init__都没有,为什么不会报错?
15
收起
正在回答
1回答
同学你好:
MyListIterator是一个迭代器对象,MyList是一个可迭代对象。可迭代对象的__iter__()方法会返回该可迭代对象的迭代器,即MyListIterator。是因为MyList是可迭代对象而不是迭代器因此才有这样的用法。
如果没有需要初始化的实例属性可以不写__init__(),这个并不会报错。
如果解决了你的疑惑,请采纳,祝学习愉快~
1.Python零基础入门
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星