“节点”对象不可调用

我有以下代码:


class Node:

    def __init__(self,data):

        self.data = data

        self.next = None

class linkedList:

    def __init__(self):

        self.top = None

    def isempty(self):

        return self.top== None

    def push(self,data):

        new_node = Node(data)

        #if self.top ==None:

        #    self.top= new_node

         #   return

        new_node.next = self.top

        self.top = new_node

    def pop(self):

        if self.top ==None:

            print('underflow comdition')

            return

        temp = self.top

        self.top = self.top.next

        return temp.data

    def top(self):

        if self.isempty():

            print('empty stack')

            return


        return self.top.data

    def printstack(self):

        if self.isempty():

            return

        temp = self.top

        print('stack from top')

        while temp != None:

            print(temp.data)

            temp = temp.next


llist = linkedList()

llist.push(5)

llist.push(7)

llist.push(9)

llist.push(11)

llist.push(13)

llist.push(15)

llist.push(17)

llist.pop()

llist.pop()

llist.top()

llist.pop()

llist.push('oolala')

llist.printstack()

但我收到以下错误:


TypeError                                 Traceback (most recent call last)


<ipython-input-16-a71ab451bb35> in <module>

     47 llist.pop()

     48 llist.pop()

---> 49 llist.top()

     50 llist.pop()

     51 llist.push('oolala')


TypeError: 'Node' object is not callable

我该如何解决?


青春有我
浏览 145回答 1
1回答

临摹微笑

您覆盖了属性top:它不能既是变量又是方法。首先,您将其定义为方法:def top(self):&nbsp; &nbsp; ...但是,稍后,您使用top节点属性覆盖它:&nbsp; &nbsp; self.top = new_nodetop现在是 a Node,你不能调用节点。我建议您更改方法名称;作为一般做法,方法应该是动词,就像您使用pushand所做的那样pop。def show_top(self):&nbsp; &nbsp; if self.isempty():&nbsp; &nbsp; &nbsp; &nbsp; print('empty stack')&nbsp; &nbsp; &nbsp; &nbsp; return&nbsp; &nbsp; return self.top.data...llist.pop()llist.show_top()llist.pop()llist.push('oolala')llist.printstack()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python