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
我的代码访问 prev
(last_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)。
我在尝试获取之前的节点时遇到错误 (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
我的代码访问 prev
(last_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)。