我有以下代码: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()
添加回答
举报
0/150
提交
取消