队列的相等性和同一性
Equality and identity of Queues
两个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
实例是否会被评估为相等或相同。
如果两个对象的 __eq__
方法之一的计算结果为 True
,则两个对象相等 (==
)。
如果两个对象实际上是位于同一内存地址的同一对象,则它们是相同的 (is
)。
如果 class(或其父级)未实现 __eq__
方法,则相等比较回退为身份比较。
The Queue
class does not implement __eq__
所以两个 Queue 对象只会 相等 如果它们实际上 相同 .
这可以通过 Queue() == Queue()
是 False
的事实来证明。
两个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
实例是否会被评估为相等或相同。
如果两个对象的 __eq__
方法之一的计算结果为 True
,则两个对象相等 (==
)。
如果两个对象实际上是位于同一内存地址的同一对象,则它们是相同的 (is
)。
如果 class(或其父级)未实现 __eq__
方法,则相等比较回退为身份比较。
The Queue
class does not implement __eq__
所以两个 Queue 对象只会 相等 如果它们实际上 相同 .
这可以通过 Queue() == Queue()
是 False
的事实来证明。