【发布时间】:2018-02-18 21:52:32
【问题描述】:
是否可以做一些看起来像这样的事情:
if obj in a_list_of_the_same_obj_type:
#do stuff
我的 obj 已经有 __eq__ 和 __ne__ 函数在属性上进行比较,所以我认为 in 关键字会调用它,但它看起来不像。
【问题讨论】:
-
提示:
__contains__ -
你用的是什么代码?
-
我做了一个小实验,
__eq__肯定被in用于列表。问题可能出在您的__eq__和__ne__的实现上。 -
会员测试需要
__hash__而不是__eq__。该测试通常读取“此 obj 在此序列中”而不是“该序列包含与我的对象相等的对象”,因此成员资格测试对于不可变对象最实用。 -
正如@morsecodist 提到的,
__eq__肯定被使用,而我的__eq__实现是问题所在。