python-CSD-kursu/python-temel/sample.iterable.py~

48 lines
992 B
Python

class SampleIterable:
def __init__(self, *args):
self._args = args
def __iter__(self):
return SampleIterator(self._args)
def __reversed__(self):
return SampleReverseIterator(self._args)
class SampleIterator:
def __init__(self, args):
self._args = args
self._i = 0
def __iter__(self):
return self
def __next__(self):
if self._i == len(self._args):
raise StopIteration
self._i += 1
return self._args(self._i - 1)
class SampleReverseIterator:
def __init__(self, args):
self._args = args
self._i = len(self._args) - 1
def __iter__(self):
return self
def __next__(self):
if self._i < 0:
raise StopIteration
self._i -= 1
return self._args[self._i + 1]
for i in SampleIterable(1, 2, 3, 4, 5):
print(i, end = ' ')
print()
for i in reversed(SampleIterable(1, 2, 3, 4, 5)):
print(i, end = ' ')
print()