还没查阅源码,先试着练手
1 class my_range(object): 2 3 def __init__(self, *args): 4 if not args: 5 raise TypeError, 'range expected at least 1 arguments, got 0' 6 elif len(args) == 1: 7 self.start, self.stop, self.step = (0, args[0], 1) 8 elif len(args) == 2: 9 self.start, self.stop, self.step = (args[0], args[1], 1) 10 elif len(args) == 3: 11 self.start, self.stop, self.step = args 12 else: 13 raise TypeError, 'range expected at most 3 arguments, got %d' % len(args) 14 self.n = 0 15 16 def next(self): 17 while True: 18 r = self.start + self.step * self.n 19 if r >= self.stop: 20 break 21 self.n += 1 22 return r 23 raise StopIteration 24 25 def __iter__(self): 26 return self