python中的FIFO dequeueing“AttributeError:队列实例没有属性‘front’?

2024-09-30 20:18:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个功能性的(不一定是最有效的,因为我对编程很不熟悉)FIFO队列,我的出列有问题。在

我的代码如下:

class QueueNode:
    def __init__(self, data):
        self.data = data
        self.next = None 

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

class Queue:
    def __init__(self):
        self.front = None
        self.rear = None
        self.size = 0

    def enqueue(self, item):
        newnode = QueueNode(item)
        newnode.next = None
        if self.size == 0:
            self.front = self.rear = newnode
        else:
            self.rear = newnode
            self.rear.next = newnode.next
        self.size = self.size+1

    def dequeue(self):
        dequeued = self.front.data
        del self.front
        self.size = self.size-1
        if self.size == 0:
            self.rear = None
        print self.front #for testing

如果我这样做,并将一个项目出列,就会得到错误“AttributeError:Queue instance has no attribute‘front’。”我猜我的函数没有正确分配队列的新前端?不过,我不知道怎么解决它。在

我真的不想从头开始,所以如果我的代码有一个调整可以工作的话,我更愿意这样做——我不想太多地最小化运行时,而只是去感受一下类和那些性质的东西。在

提前谢谢你的帮助。在


Tags: 代码selfnonedatasize队列initdef
2条回答

您还删除了属性self.front,然后尝试再次访问它。在

del self.front

print self.front #for testing # you are tying to use self.front but you removed it

某些函数末尾缺少:。在

^{pr2}$

我不确定您的意图是什么,但是self.front是变量,它没有属性data

dequeued = self.front.data # remove the data

您还缺少def__init__之间的空格

def__init__(self):

问题是这条线:

del self.front

这将从self中删除(删除)front属性。因此,在几行之后尝试print self.front时会出现错误。再也没有所谓的self.front。在

相关问题 更多 >