Python 节点对象的打印方法不工作
我正在用Python 节点对象的打印方法不工作,python,methods,linked-list,nodes,Python,Methods,Linked List,Nodes,我正在用教自己如何像计算机科学家一样思考。我从文本中复制了这段代码,但出于某种原因,我的代码抛出了一个错误。有人能看到我遗漏了什么吗?为什么Python说没有定义print\u list class Node: def __init__(self, cargo = None, next = None): self.cargo = cargo self.next = next def __str__(self): return st
教自己如何像计算机科学家一样思考。我从文本中复制了这段代码,但出于某种原因,我的代码抛出了一个错误。有人能看到我遗漏了什么吗?为什么Python说没有定义print\u list
class Node:
def __init__(self, cargo = None, next = None):
self.cargo = cargo
self.next = next
def __str__(self):
return str(self.cargo)
def print_list(node):
while node:
print node,
node = node.next
print
以下是错误:
==== RESTART: /Desktop/Programming Career/Untitled.py ====
Traceback (most recent call last):
File "Users/Desktop/Programming Career/Untitled.py", line 24, in <module>
print_list(node1)
NameError: name 'print_list' is not defined
但我得到了同样的错误:
name错误:未定义名称“print\u list”
您已经定义了一个方法print\u list()
,但尝试将其作为函数调用。删除def print_list(节点)之前的缩进:
然后它将成为一个函数
class Node:
def __init__(self, cargo = None, next = None):
self.cargo = cargo
self.next = next
def __str__(self):
return str(self.cargo)
def print_list(node):
while node:
print node,
node = node.next
print
或者将其作为一个方法,然后按如下方式调用:
class Node:
def __init__(self, cargo = None, next = None):
self.cargo = cargo
self.next = next
def __str__(self):
return str(self.cargo)
def print_list(self):
node = self
while node:
print node,
node = node.next
print
然后,您可以调用node1.print\u list()
请注意,如果您确实将其作为一个方法,它将像您编写的那样工作,但在第一个参数中使用约定self
似乎更为简洁,并且虽然您可以重新绑定self
,但不这样做可能更为清晰。您已经定义了一个方法print_list()
,但您试图将其作为函数调用。删除def print_list(节点)之前的缩进:
然后它将成为一个函数
class Node:
def __init__(self, cargo = None, next = None):
self.cargo = cargo
self.next = next
def __str__(self):
return str(self.cargo)
def print_list(node):
while node:
print node,
node = node.next
print
或者将其作为一个方法,然后按如下方式调用:
class Node:
def __init__(self, cargo = None, next = None):
self.cargo = cargo
self.next = next
def __str__(self):
return str(self.cargo)
def print_list(self):
node = self
while node:
print node,
node = node.next
print
然后,您可以调用node1.print\u list()
请注意,如果您确实将其作为一种方法,它会像您编写的那样工作,但是在第一个参数中使用约定self
似乎更为简洁,并且虽然您可以重新绑定self
,但不这样做可能更为清晰。我认为您希望函数print\u list
不属于节点类。如果是这种情况,只需删除print_list函数的缩进。
Python不使用像java或C++这样的括号,而是使用缩进来代替。在本例中,Python将print\u list
解释为属于节点类的函数
class Node:
def __init__(self, cargo = None, next = None):
self.cargo = cargo
self.next = next
def __str__(self):
return str(self.cargo)
def print_list(node):
while node:
print node
node = node.next
print
我认为您希望函数print\u list
不属于节点类。如果是这种情况,只需删除print_list函数的缩进。
Python不使用像java或C++这样的括号,而是使用缩进来代替。在本例中,Python将print\u list
解释为属于节点类的函数
class Node:
def __init__(self, cargo = None, next = None):
self.cargo = cargo
self.next = next
def __str__(self):
return str(self.cargo)
def print_list(node):
while node:
print node
node = node.next
print
将打印列表
移出节点
的定义。您的代码缩进有问题,请解决,我们可以帮助您!取消输入函数print_list()
,该函数不是类节点的一部分
@ForceBru感谢您的提示!我在课堂范围内有固定的缩进是print\u list
?为什么它没有self
?将打印列表
移出节点
的定义。您的代码缩进有问题,请修复它,以便我们可以帮助您!取消输入函数print_list()
,该函数不是类节点的一部分
@ForceBru感谢您的提示!我在课堂范围内有固定的缩进是print\u list
?为什么它没有self
?是的,这正是我想要做的。我把方法和功能搞混了。非常感谢你!是的,这正是我想要做的。我把方法和功能搞混了。非常感谢你!