python中的链接队列无法判断它是否为空

时间:2015-02-20 22:12:52

标签: python class linked-list queue

所以我在python中构建了一个看起来像这样的链接队列类。

class queue:
    class _Node:
        def __init__(self, elem, next):
            self._elem = elem
            self._next = next

    def __init__(self):
        self._rear = None
        self._front = None
        self._size = 0

    def enqueue(self, value):
        if self.isEmpty:
            self._front = self._Node(value, None)
            self._rear = self._front
            self._size += 1
            return
        self._rear._next = self._Node(value, None)
        self._rear = self._rear._next
        self._size += 1
        return

    def dequeue(self):
        retVal = self._front._elem
        self._front = self._front._next
        self._size -= 1
        if self.isEmpty:
            self._rear = None
        return retVal

    def __len__(self):
        return self._size        

    def isEmpty():
        return len(self) == 0

我正在使用这个类来创建一个真正基本的打印队列,该队列可以输入两台打印机。我的问题是,我的类中的isEmpty函数似乎认为它总是空的。如果我添加3个打印作业,然后尝试显示它们,它将只显示最后一个,因为enqueue函数认为队列为空。我似乎无法弄明白为什么所以任何帮助都会受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

您实际遇到的问题是您没有调用方法,而只是引用方法对象本身的布尔值,这始终是真的。它应该是:

if self.isEmpty():