Junior — Middle
¿Cómo se deben implementar los métodos dentro de la propia clase para garantizar su capacidad de iteración?
sobes.tech AI
Respuesta de la IA
Para hacer que una clase sea iterable en Python, debes implementar el método __iter__, que devuelve un iterador. Un iterador es un objeto con el método __next__, que devuelve el siguiente elemento o genera una excepción StopIteration cuando no hay más elementos.
Una forma sencilla es hacer que la clase sea también un iterador, implementando ambos métodos:
class MyIterable:
def __init__(self, data):
self.data = data
self.index = 0
def __iter__(self):
self.index = 0 # reiniciar para una nueva pasada
return self
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
value = self.data[self.index]
self.index += 1
return value
# Uso:
obj = MyIterable([1, 2, 3])
for item in obj:
print(item)
Alternativamente, __iter__ puede devolver un iterador separado, por ejemplo, usando un generador:
def __iter__(self):
for item in self.data:
yield item
Este método es más simple y a menudo preferido.