尝试编写next()方法来迭代链接列表并获取“NoneType”对象不可调用

2024-10-04 15:20:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编写下一个方法,以便能够用for循环遍历链接列表对象,并且无论我如何更改代码,我都会得到“NoneType”对象是不可调用的。这是一个赋值,因此,当涉及到其他构造函数和方法时,我不能更改任何内容。我唯一能玩的就是iter和下一个。这是我的代码:

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

Tags: 对象方法selfnonenodefordatadef
1条回答
网友
1楼 · 发布于 2024-10-04 15:20:05

看来你读得太多了。尝试:

self.__current = self.__current.next
return self.__current.data

因为此时的self.__current.next将指向下一个元素。如果是dnid列表,那就什么都不知道了。在

相关问题 更多 >

    热门问题