【问题标题】:'Node' object is not callable“节点”对象不可调用
【发布时间】:2020-01-25 23:22:33
【问题描述】:

我有以下代码:

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

我该如何解决这个问题?

【问题讨论】:

  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确说明问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您指定的问题。
  • Garvit - 我从您的帖子中删除了不必要的文字,并试图将其变成一个实际的问题...您能否请edit 进一步解释您正在尝试做什么以及什么结果你期待吗?另外 - 保持文明。

标签: python linked-list stack


【解决方案1】:

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

首先你把它定义为一个方法:

def top(self):
    ...

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

    self.top = new_node

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

我建议您更改方法名称;作为一般惯例,方法应该是动词,就像您对 pushpop 所做的那样。

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()

【讨论】:

    猜你喜欢
    • 2015-12-29
    • 2019-08-15
    • 1970-01-01
    • 2021-08-21
    • 2018-09-30
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多