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
?是的,这正是我想要做的。我把方法和功能搞混了。非常感谢你!是的,这正是我想要做的。我把方法和功能搞混了。非常感谢你!