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):
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):