【发布时间】:2016-01-14 15:15:26
【问题描述】:
如果我在python 2.7.10 这样做
import Queue
class Item(object):
def __init__(self):
self.name = "bla"
def __cmp__(a, b):
return cmp(a.name, b.name)
e_queue = Queue.PriorityQueue()
e_queue.put((1,2))
item = Item()
e_queue.put((1, item))
第二个put 失败
...
File "/usr/lib/python2.7/Queue.py", line 136, in put
self._put(item)
File "/usr/lib/python2.7/Queue.py", line 225, in _put
heappush(self.queue, item)
File "tuple_nonsense.py", line 10, in __cmp__
return cmp(a.name, b.name)
显然Item 的__cmp__ 应用于包含它的tuple。 The Queue docs 甚至建议使用元组作为项目:
条目的典型模式是元组,格式为:(priority_number, data)。)
那么,这里有什么问题?
【问题讨论】:
标签: python python-2.7 queue