Python for循环的真面目竟是while,如何让自己自定义的类实现for循环
首先从for循环开始,我们来看一对等效的代码
易得这段代码的运行结果为
再来看一段等效的代码
这段代码与上面这段代码等效,由此可知,如果需要让一个类可以迭代,就需要实现inter方法,并且这个被inter方法返回的对象要实现next方法,并在迭代完成所有元素后抛出一个异常。
分析完成后我们就可以自己实现一个能迭代的类了
现在我们有一个Student类
现在我想通过for循环获取Student实例的id和name,就要先实现inter方法
这里偷懒了就直接把Student本身作为迭代器,因此Student需要实现next方法
但是如果现在去用for循环迭代Student实例会发现一直返回none
所以需要在迭代结束时抛出一个停止迭代的异常
于是最终代码为
输出为