# 练习2:创建自定义range类,实现下列效果 # class MyRange: # pass # for number in MyRange(5): # print(number) # 0 1 2 3 4 class MyRangeIterrator: def __next__(self): if self.=len(data01)-1: raise StopIteration return item class MyRange: def __init__(self,data01): self.data01=data01 def __iter__(self): return MyRangeIterrator() result=MyRange(5) print(result)
时间: 2024-03-30 19:37:02 浏览: 63
您的代码有一些错误,我稍作修改:
```
class MyRangeIterator:
def __init__(self, end):
self.current = -1
self.end = end - 1
def __next__(self):
if self.current == self.end:
raise StopIteration
self.current += 1
return self.current
class MyRange:
def __init__(self, end):
self.end = end
def __iter__(self):
return MyRangeIterator(self.end)
for number in MyRange(5):
print(number)
```
以上代码实现了一个自定义的`range`类,可以用于`for`循环中。`MyRange`类的构造函数接收一个整数`end`作为参数,表示输出的数字范围是从0到`end-1`。`MyRangeIterator`类实现了迭代器的功能,每次迭代时返回下一个数字,直到达到`end`为止。在`MyRange`类的`__iter__`方法中返回一个`MyRangeIterator`实例,从而使`MyRange`对象可迭代。
阅读全文