我需要一些帮助为我的__iter__()
类编写UnorderedList()
方法。我尝试了这个:
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
python大神给出的解决方案
如果要成功迭代所有项目,则应执行
def __iter__(self):
# Remember, self is our UnorderedList.
# In order to get to the first Node, we must do
current = self.head
# and then, until we have reached the end:
while current is not None:
yield current
# in order to get from one Node to the next one:
current = current.next
这样您就可以在每一步中更进一步。
顺便说一下,Python中没有以方法的形式使用setter和getter。如果需要它们,请使用属性,否则请完全省略它们。
所以做
class Node(object):
def __init__(self, initdata):
self.data = initdata
self.next = None
class UnorderedList(object):
def __init__(self):
self.head = None
self.count = 0
def __iter__(self):
current = self.head
while current is not None:
yield current
current = current.next