help(range)
>>> R = range(4) >>> I = iter(R) >>> next(I) 0 >>> next(I) 1 >>> next(I) 2 >>> next(I) 3 >>> next(I) Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> next(I) StopIteration >>>
MaksimКак минимум, можно было заметить
К сожалению не прояснил
range.__iter__()
range.__getitem__() range.__len__()
MaksimПервый относится к протоколу итератора, два прочих к протоколу последовательности.
о чем они могут мне сказать?
ShamanЭто понятно, непонятно что за объект возвращается функцией, это не итератор, не список, и вообще где видно что он возвращает возрастающие целочисленные элементы?. он возвращает непонятные range (x,y), н-р, если бы он возвращал список то все было бы понятно.
Первый относится к протоколу итератора, два прочих к протоколу последовательности.
class range(object)
class Test(object): def __init__(self, rng): self.r = range(rng) def __iter__(self): return iter(self.r) def __getitem__(self, i): return self.r[i] def __len__(self): return len(self.r) def __repr__(self): return repr(self.r) if __name__ == '__main__': t = Test(3) print (t) print (t[0], t[2]) for i in t: print (i)