Мне нужна помощь в написании метода __iter__()
для моего класса UnorderedList()
. Я попытался это:Python Связанный список с узлами. Iterable
def __iter__(self):
current = self
while current != None:
yield current
Но петля while
не останавливается. Вот остальные мои классы и код:
class Node:
def __init__(self,initdata):
self.data = initdata
self.next = None
def getData(self):
return self.data
def getNext(self):
return self.next
def setData(self,newdata):
self.data = newdata
def setNext(self,newnext):
self.next = newnext
class UnorderedList:
def __init__(self):
self.head = None
self.count = 0
Почему бы * * это остановить? Вы устанавливаете 'current' в экземпляр' self', а затем повторно 'yield'. Ничто * не меняется * внутри цикла, поэтому логически оно никогда не должно начинаться или никогда не заканчиваться. Кроме того, обратите внимание, что вы должны проверить идентификатор для 'None'; 'while current is not None:'. – jonrsharpe