TypeError: 'node' object is not callable

TypeError: 'node' object is not callable

我在尝试获取之前的节点时遇到错误 (TypeError: 'node' object is not callable)。我做错了什么?

我的节点Class:

class node(object):
    def __init__(self):
        self.node=[]
        self.info = None
        self.prev = None
        self.depth=-1
        self.step = []
    def prev(self):
        return self.prev
    def add(self):
        node1=node()
        self.node.append(node1)
        node1.prev=self
        return node1

我的代码访问 prevlast_node 的深度值应该在 5 左右):

rev = last_node
dep = rev.depth
revPath = [None]*(dep*4)
for g in range(0,dep):
    revPath[dep - (g*4) - 1] = rev.step[3]
    revPath[dep - (g*4) - 2] = rev.step[2]
    revPath[dep - (g*4) - 3] = rev.step[1]
    revPath[dep - (g*4) - 4] = rev.step[0]
    rev = rev.prev()

附加信息:

我正在尝试向后遍历树以查看所采用的路径。 step[] 值只是获取了几个整数。除了 prev 之外,该代码也可以正常运行(即,如果我取出该部分以找到所采用的路径,则没有问题)。

您在 class 中定义了一个名为 prev 的方法,但在您的构造函数中您将 None 分配给 self.prev,然后在 [=14] 中=] 你用 node 实例再次分配给它。

因此,当您尝试调用 rev.prev() 时,该方法已被覆盖,您实际上是在尝试调用 node 对象,因此出现错误。

Python(参见 PEP-0008)中的惯例是在私有字段(客户端代码不应使用的字段)前加上下划线,如下所示:

def __init__(self):
    self._node=[]
    self._prev = None
    # Etc.

将 class 命名为小写也是有风险的,因为任何名为 node 的变量都会隐藏它并使其无法访问。 Python 中的惯例是对 class 名称使用 Pascal 大小写(以大写字母开头)(再次参见 PEP-0008)。