不覆盖比较运算符的Python对象是否等于自身?

不覆盖比较运算符的Python对象是否等于自身?,第1张

不覆盖比较运算符的Python对象是否等于自身?

是的
。在您的示例中,

q.remove(y)
将删除第一次与相等的对象
y
。然而,类的方式
A
定义,你不应该†曾经有一个变量比较平等的
y
-与也必将为同任何其他名称的例外
y
情况。

文档的相关部分在这里:

如果

__cmp__(), __eq__() or __ne__()
未定义任何 *** 作,则按对象标识(“地址”)比较类实例

因此

A
实例的比较是通过身份(在CPython中实现为内存地址)进行的。没有其他的对象都可以有一个身份等于
id(y)
以内
y
的一生,即用于
只要你坚持一个参考
y
(你必须,如果你打算从列表中删除它!)

† 从技术上讲,在其他存储位置比较相同的对象仍然是可能的-

mock.ANY
就是这样的例子。但是这些对象需要重写其比较运算符以强制执行结果。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5617903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存