我有一个链表。当我调用list.push()时,它工作得很好,但是当我在funtioninit()中执行同样的操作时,它什么也不做。有什么问题吗?

class Node:
    def __init__(self, data):
        self.data = data
        self.nextNode = None

    def __str__(self):
        return str(self.data)

class linkedList:
    def __init__(self):
        self.head = None
        self.end = None

    def isEmpty(self):
        return self.head == None

    def push(self, item):
        new_node = Node(item)
        if not self.head:
            self.head = self.end = new_node
        else:
            new_node.nextNode = self.head
            self.head = new_node

#doesnt work
def init():
    list = linkedList()
    list.push("a")

init()
print(list.isEmpty()) #True

#works
list = linkedList()
list.push("a")
print(list.isEmpty()) #False

最佳答案

在函数外部,不能访问在函数内部创建的本地对象。返回它使其可用:

def make_list():
    my_list = linkedList()
    my_list.push("a")
    return my_list

my_list = make_list()
print(my_list.isEmpty())

不要为对象使用名称list,因为它会隐藏内置的list

关于python - 调用链表功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33846163/

10-14 15:21
查看更多