Протокол Ітератора
Свайпніть щоб показати меню
У Python ітераторний протокол — це набір методів, які дозволяють об'єктам бути ітерованими, роблячи їх сумісними з конструкціями на кшталт циклів for. Два основних методи, що використовуються, — це __iter__ та __next__. Коли ви використовуєте цикл for для об'єкта, Python внутрішньо викликає метод __iter__ цього об'єкта для отримання ітератора. Цей ітератор повинен мати метод __next__, який повертає наступний елемент послідовності при кожному виклику. Коли елементи закінчуються, __next__ повинен згенерувати виключення StopIteration, щоб позначити кінець послідовності.
1234567891011121314151617181920212223242526class SquaresIterator: # Initialize with the number of squares to generate def __init__(self, limit): self.limit = limit self.current = 0 # Return the iterator object (itself) def __iter__(self): return self # Return the next square, or stop if done def __next__(self): if self.current < self.limit: # Calculate square result = self.current ** 2 # Move to next number self.current += 1 return result # If no more items else: raise StopIteration for square in SquaresIterator(5): print(square)
__init__ — етап налаштування
Під час створення ітератора він отримує:
-
limit→ скільки чисел потрібно згенерувати; -
Встановлює
current = 0→ початкова точка; -
Готує все необхідне для ітерації.
__iter__ – Робить об'єкт ітерованим
- Повертає
self(сам об'єкт); - Саме це дозволяє використовувати об'єкт у циклі for.
__next__ – Генерація значень
Цей метод викликається кожного разу, коли цикл запитує наступний елемент:
- Якщо
current<limit:- Обчислити
current²; - Збільшити
currentна 1; - Повернути результат.
- Обчислити
- Якщо
current≥limit:- Викликати
StopIterationдля автоматичної зупинки циклу.
- Викликати
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат