PriorityQueue 自定义中的类型错误 class

TypeError in PriorityQueue custom class

from queue import PriorityQueue

class NewQueue(PriorityQueue):
    def __init__(self, maxsize=None):
        PriorityQueue.__init__(self, maxsize)

    def put(self, item, block=True, timeout=None):
        PriorityQueue.put(self, item)


queue = NewQueue()

queue.put('abc')

我正在尝试创建 PriorityQueue 的自定义 class,但我得到了 以下错误:

    PriorityQueue.put(self, item)
TypeError: unorderable types: NoneType() > int()

为什么会发生这种情况,我怎样才能让这个自定义 class 起作用?

问题不在于对 queue.put 的调用,而是您将 None 作为 maxsize 传递的事实。如果你想有一个无限队列使用 0 作为 maxsize.

错误发生在 put 中,因为它检查 maxsize 是否大于 0,这对于 None.

将失败

所以只需更改__init__

的定义
class NewQueue(PriorityQueue):
    def __init__(self, maxsize=0):
        ...

您正在尝试使用 maxsize=None 创建队列。尝试使用

实例化您的对象
queue = NewQueue(0)

或更改您的 __init__ 签名:

def __init__(self, maxsize=0):