队列的平等性和同一性

时间:2018-09-11 17:17:33

标签: python queue identity equality

两个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实例是否将被评估为相等或相同。

1 个答案:

答案 0 :(得分:0)

如果两个对象的==方法之一评估为__eq__,则两个对象相等(True

如果两个对象实际上是同一对象,并且位于相同的内存地址,则它们是相同的(is)。

如果一个类(或其父类)未实现__eq__方法,则相等比较将退回到身份比较。

The Queue class does not implement __eq__,因此如果两个Queue对象实际上相同,则它们将永远是 equal

这可以通过Queue() == Queue()False的事实来证明。