我正在尝试编写下一个方法,以便能够使用for循环迭代链接列表对象,无论我如何更改我的代码,我都会继续获得"' NoneType&#39 ;对象不可调用"。这是一项任务,因此当涉及到其他构造函数和方法时,我无法改变任何东西。我唯一可以玩的是iter和next。这是我的代码:
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self, fdata):
firstNode = Node(fdata)
self.first = firstNode
self.last = firstNode
self.n = 1
def append(self, ndata):
newNode = Node(ndata)
self.last.next = newNode
self.last = newNode
self.next = None
self.n += 1
def __iter__(self):
return self
def next(self):
if self.__current.next == None:
raise StopIteration
else:
self.__current = self.__current.next
return self.__current.next.ndata
a = LinkedList(0); a.append(1); a.append(2)
for n in a:
print n
答案 0 :(得分:0)
看起来你提前读得太远了。尝试:
self.__current = self.__current.next
return self.__current.data
因为当时的self.__current.next
将指向next-next元素。如果列表dnid - 无处。