两个queue.Queue
实例将是等于还是相同?
我有一些代码,用于创建Queue
实例,附加到list
上,然后删除。
l = []
def example():
q = Queue()
l.append(q)
thingy = q.get() # wait on background worker thread to put something in queue
# ... do something with thingy ...
l.remove(q)
对于(我认为是无关紧要的)上下文,更广泛的程序中的其他线程将把它们自己的队列放入列表中,并且还有一个后台工作线程将对象放入它在列表中找到的队列中。 / p>
我了解到list.remove()
首先检查身份,然后检查平等。因此,我想知道两个Queue
实例是否将被评估为相等或相同。
答案 0 :(得分:0)
如果两个对象的==
方法之一评估为__eq__
,则两个对象相等(True
。
如果两个对象实际上是同一对象,并且位于相同的内存地址,则它们是相同的(is
)。
如果一个类(或其父类)未实现__eq__
方法,则相等比较将退回到身份比较。
The Queue
class does not implement __eq__
,因此如果两个Queue对象实际上相同,则它们将永远是 equal 。
这可以通过Queue() == Queue()
是False
的事实来证明。