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

Linked queue in python can't tell if it's empty

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

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

我正在使用这个 class 来创建一个真正基本的打印队列,该队列可以送入两台打印机。我的问题是,class 中的 isEmpty 函数似乎认为它始终为空。如果我添加 3 个打印作业,然后尝试显示它们,它只会显示最后一个,因为入队函数认为队列是空的。我似乎无法弄清楚为什么如此任何帮助将不胜感激。

你实际遇到的问题是你调用的不是方法,而是引用方法对象本身的boolean值,永远为真。应该是:

if self.isEmpty():