TypeError:“node”对象不是callab

用户

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

我的节点类:

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

^{pr2}$

附加信息:

我正试着向后穿过那棵树,以便看到所走的路。step[]值只获取几个整数。除了prev(即,如果我取出部分来查找所采用的路径,则没有问题)。在


已被浏览了15000次
更新日期: 2020-10-26 01:28:13
1 个回答
fefe Tyson

您已经在类中定义了一个名为prev的方法,但是在构造函数中,您将None分配给self.prev,然后在add中,使用一个node实例再次对其进行赋值。在

因此,当您试图调用rev.prev()时,该方法已被重写,实际上您正试图调用一个node对象,因此出现错误。在

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

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

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

评论 - 2020年7月29日 19:33

最新Python问答

推荐Python问答