前言:
最近在学习二叉树的时候碰到个二叉搜索迭代器,是通过__iter__重载循环for x in 实现的,随即对__iter__函数的重载做了一些深度的了解,自己写了一些例子来加深理解,也希望对大家有所帮助。大家觉得有用的话,可以三连一下哈。
1、__iter__函数和__next__函数
1、__ iter__ 返回一个特殊的迭代器对象, 这个迭代器对象实现了 __ next__ 方法并通过 StopIteration 异常标识迭代的完成。
2、__next__方法(Python 2 里是 next())会返回下一个迭代器对象
下面举个例子来解释二者的用途。这是自己重写了一些range()函数。
class range_():
def __init__(self,N):
self.N = N
self.a1 =0
def __iter__(self): # 在迭代开始时运行一次,之后进入__next__
return self
def __next__(self): # 循环调用__next__
an = self.a1
if an == self.N:
raise StopIteration
else:
self.a1 += 1
return an # an作为i返回
for i in range_(3):
print(i)
这里for in 语句,触发__iter__ 函数,然后再循环调用__next__.下面去掉__iter__看会发生什么变化。
class range_():
def _