队列的平等和身份

问题描述 投票:0回答:1

两个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)

对于(我认为不相关)上下文,更广泛的程序中的其他线程将把自己的队列放入列表中,并且还有一个后台工作线程将把对象放入它在列表中找到的队列中。

据我所知,list.remove()首先检查身份,然后检查是否相等。因此,我想知道两个Queue实例是否会被评估为相同或相同。

python queue identity equality
1个回答
0
投票

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

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

如果一个类(或其父类)没有实现__eq__方法,那么相等比较将回归到身份比较。

The Queue class does not implement __eq__所以两个Queue对象只有在它们实际上是相同的时才会相等。

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

© www.soinside.com 2019 - 2024. All rights reserved.