您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

文档的相关部分在这里

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

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

? 从技术上讲,在其他存储位置比较相同的对象仍然是可能的-mock.ANY就是这样的例子。但是这些对象需要重写其比较运算符以强制执行结果。

python 2022/1/1 18:40:08 有267人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶