Курс Python → Создание итерируемых объектов

Для создания собственных итерируемых объектов в Python, можно использовать классы и специальные методы, такие как метод iter. Например, в данном примере у нас есть класс Squares, который реализует метод iter(self), возвращающий итератор. Итератор — это объект, который поддерживает метод next() и используется для итерации по последовательности значений.

При использовании цикла for для объекта squares, интерпретатор Python вызывает метод iter для получения итератора, а затем последовательно вызывает метод next до возникновения исключения StopIteration. Метод iter возвращает сам объект, так как он также является итератором.

Это удобно, когда мы создаем объекты, которые могут быть использованы в циклах for или других контекстах, требующих итерации. Таким образом, мы можем использовать наши собственные итерируемые объекты в стандартных итерационных конструкциях и управлять процессом итерации с помощью методов iter и next.


class Squares:
    def __init__(self, n):
        self.n = n
        self.i = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.i < self.n:
            result = self.i ** 2
            self.i += 1
            return result
        else:
            raise StopIteration

В приведенном выше примере кода класс Squares реализует методы __iter__ и __next__ для создания итератора, который возвращает квадраты чисел от 0 до n. Теперь мы можем создать объект этого класса и использовать его в цикле for для итерации по значениям квадратов чисел.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Функция __init__ в Python
  2. Python Аргументы по умолчанию
  3. Python 3.12: Псевдонимы типов
  4. Модуль xkcd: добавление юмора в Python
  5. Очистка данных в Python
  6. Создание вложенного генератора
  7. Пропуск строк в файле с itertools
  8. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  9. Объединение списков с помощью zip
  10. Оптимизация памяти с __slots__
  11. Логирование в Python
  12. Функция all() в Python
  13. Работа с JSON данными в Python
  14. Замыкания в Python
  15. Декоратор total_ordering для класса Point
  16. Склеивание строк без циклов
  17. Оптимизация сравнения в Python
  18. Форматирование данных с помощью pprint
  19. Хранение данных
  20. Деление в Python
  21. Генерация строк с .join()
  22. Counter() — подсчет элементов
  23. Docstring в Python
  24. Получение обратного списка чисел
  25. Сортировка элементов в Python
  26. Итерация по коллекции в Python
  27. Метод join() для объединения элементов в строку.
  28. Преобразование чисел в восьмеричную строку
  29. Получение текущей даты в Python
  30. Получение комбинаций в Python
  31. Сравнение def и lambda-функций
  32. Искажение имен в Python
  33. Метод __index__ в Python
  34. Нарезка списков в Python
  35. Генераторы в Python
  36. Отладчик pdb: начало работы
  37. Форматирование объектов с модулем pprint
  38. Структура данных deque в Python
  39. Удаление файлов в Python
  40. Метод __irshift__ для Python
  41. Установка и использование Python-dateutil
  42. Оператор assert в Python
  43. Переопределение метода __pow__

Marketello читают маркетологи из крутых компаний