为了账号安全,请及时绑定邮箱和手机立即绑定

“节点”对象不可调用

“节点”对象不可调用

青春有我 2022-06-07 19:14:58
我有以下代码:class Node:    def __init__(self,data):        self.data = data        self.next = Noneclass 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.nextllist = 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我该如何解决?
查看完整描述

1 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

您覆盖了属性top:它不能既是变量又是方法。


首先,您将其定义为方法:


def top(self):

    ...

但是,稍后,您使用top节点属性覆盖它:


    self.top = new_node

top现在是 a Node,你不能调用节点。


我建议您更改方法名称;作为一般做法,方法应该是动词,就像您使用pushand所做的那样pop。


def show_top(self):

    if self.isempty():

        print('empty stack')

        return

    return self.top.data


...


llist.pop()

llist.show_top()

llist.pop()

llist.push('oolala')

llist.printstack()


查看完整回答
反对 回复 2022-06-07
  • 1 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信