因为在python的所有迭代场景中所作用的对象必须是可迭代对象(Iterable),因此迭代器(Iterator)要想在迭代场景中使用,就必须是Iterable对象;要成为Iterable对象就必须遵守Iterable协议,通过实现__iter__函数来满足Iterable协议,从而成为Iterable对象。个人认为,迭代器实现__iter_函数的目的是为了兼容python已有的迭代场景和工具,例如:for循环、列表解析、map、sum、zip等等。
如果迭代器不实现__iter_方法的话,上述函数和工具都无法用来对该迭代器进行迭代,只能通过人工调用next()方法来进行迭代,这与python "简洁统一" 的设计原则是相违背的,所以迭代器要实现__iter__方法。