1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| #!/usr/bin/env python
# Source : "Dive into Python 3"
class iterator():
def __init__(self, text):
self.text = text
def __iter__(self):
self.__index = 0
self.__indexMax = len(self.text)
return self
def __next__(self, step = 1):
currentIndex = self.__index
self.__index += step
if currentIndex >= self.__indexMax:
raise StopIteration
return self.text[currentIndex]
#######
# TESTS
if __name__=="__main__":
myIterator = [ iterator('abcdefgh'),
iterator('ab123b'),
iterator('ab123b123b123cdf') ]
for oneIterator in myIterator:
print('-'*20)
for c in oneIterator:
print(c)
if c == 'b':
oneIterator.__next__(3) |