class MyRange(object):
def __init__(self,n):
self.i=0
self.n=n
def __iter__(self): #是类中的核心,它返回迭代器本身,实现__iter__()方法的对象,即意味着可迭代。
return self
def next(self): #含有next()的对象就是迭代器,并且在这个方法中,在没有元素的时候,发起StopIteration()异常。
if self.i<self.n:
i=self.i
self.i += 1
return i
else:
raise StopIteration()
if __name__=="__main__":
x=MyRange(45)
#print (list(x)) #报错
print("x.next()==>",x.next)
print("__________for loop_____________")
for i in x:
print(i) #报错
错误内容:
Traceback (most recent call last):
File "C:\Users\LZS\AppData\Local\Programs\Python\Python311\111\120.py", line 27, in <module>
for i in x:
TypeError: iter() returned non-iterator of type 'MyRange'