Back to questions
Junior — Middle
62
Каким образом следует реализовать методы внутри собственного класса для обеспечения его возможности итерирования?
Answer from AI
sobes.tech AI
Чтобы сделать собственный класс итерируемым в Python, нужно реализовать метод __iter__, который возвращает итератор. Итератор — это объект с методом __next__, который возвращает следующий элемент или возбуждает исключение StopIteration, когда элементы закончились.
Простой способ — сделать класс сам итератором, реализовав оба метода:
class MyIterable:
def __init__(self, data):
self.data = data
self.index = 0
def __iter__(self):
self.index = 0 # сброс для нового прохода
return self
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
value = self.data[self.index]
self.index += 1
return value
# Использование:
obj = MyIterable([1, 2, 3])
for item in obj:
print(item)
Альтернативно, __iter__ может возвращать отдельный итератор, например, используя генератор:
def __iter__(self):
for item in self.data:
yield item
Это более простой и часто предпочтительный способ.