Python(特别是2.6.4)如何确定列表成员资格?我做了一些测试,看看它做了什么:
def main():
obj = fancy_obj(arg='C:\\')
needle = (50, obj)
haystack = [(50, fancy_obj(arg='C:\\')), (1, obj,), needle]
print (1, fancy_obj(arg='C:\\'),) in haystack
print needle in haystack
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
产量:
False
True
Run Code Online (Sandbox Code Playgroud)
这告诉我Python可能正在检查对象引用,这是有道理的.有什么更明确的我可以看一下吗?
对于列表和元组类型,x in y
当且仅当存在索引 i 且该索引x == y[i]
为 true 时,才为 true。
因此,在您的示例中,如果fancy_obj
类将 的值存储arg
在实例变量中,并且要实现一个__eq__
返回 True 的方法,如果被比较的两个fancy_objs
值相同,arg
则(1, fancy_obj(arg='C:\\'),) in haystack
返回 True。