Python ';节点';对象不可调用
我有以下代码:Python ';节点';对象不可调用,python,linked-list,stack,Python,Linked List,Stack,我有以下代码: 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):
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
TypeError回溯(最近一次调用)
在里面
47.list.pop()
48.list.pop()
--->49.利斯特
50 llist.pop()
51利斯特推法(“乌拉拉”)
TypeError:“节点”对象不可调用
如何修复此问题?您重写了属性
top
:它不能既是变量又是方法
首先,将其定义为一种方法:
def top(self):
...
但是,稍后,您将使用top
节点属性覆盖该属性:
self.top = new_node
top
现在是一个节点
,您不能调用节点
我建议您更改方法名称;一般来说,方法应该是动词,就像您使用push
和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()
欢迎来到StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确指定问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您指定的问题。Garvit-我从您的帖子中删除了不必要的文本,并试图将其变成实际问题。。。请你进一步解释一下你正在尝试做什么,以及你期望得到什么样的结果,好吗?还有,保持文明。