Итератор - предоставляет способ последовательного доступа к элементам составного объекта без раскрытия его внутренней структуры.

Используется в словарях, списках, множествах, в итерациях по строкам, генераторах и ORM-запросах.

Пример: `from collections.abc import Iterator, Iterable

class AlphabeticalOrderIterator(Iterator): def init(self, collection, reverse=False): self.collection = sorted(collection) self.reverse = reverse self._position = -1 if reverse else 0

def next(self): try: value = self.collection[self.position] self.position += -1 if self.reverse else 1 return value except IndexError: raise StopIteration()

class WordsCollection(Iterable): def init(self): self._items = []

def add_item(self, item): self._items.append(item)

def iter(self): return AlphabeticalOrderIterator(self._items)

def get_reverse_iterator(self): return AlphabeticalOrderIterator(self._items, True)

#Использование

collection = WordsCollection() collection.add_item("First") collection.add_item("Second") collection.add_item("Third")

print("Прямой порядок:") for item in collection: print(item)

print("nОбратный порядок:") for item in collection.get_reverse_iterator(): print(item) #weekofpatterns`