В чем конкретно заключается роль iter? Рассмотрим следующий блок кода:Почему в классах нужно использовать метод __iter __()?
class Reverse:
def __init__(self,data):
self.data = data
self.index = len(data)
def __iter__(self):
return self
def next(self):
if self.index == 0:
raise StopIteration
self.index = self.index - 1
return self.data[self.index]
опуская ИТЭР (самообеспечение) и переписано:
class Reverse2:
def __init__(self,data):
self.data = data
self.index = len(data)
def next(self):
if self.index == 0:
raise StopIteration
self.index = self.index - 1
return self.data[self.index]
Тогда:
x = [1,2,3]
y = Reverse(x)
z = Reverse2(x)
y.next()
>>> 3
y.next()
>>> 2
y.next()
>>> 1
z.next()
>>> 3
z.next()
>>> 2
z.next()
>>> 1
классы ведут себя так же, независимо от того, включают ли я iter() или нет, так почему я должен включать его в первую очередь? Извините, если мой вопрос непонятен - я просто не знаю, как сформулировать его более ясным образом ...
ok Я понимаю, почему __iter__ должен быть включен сейчас, но почему я должен заставить этот метод возвращать «я»? –