我正在尝试检查我的某个对象是否在对象列表中,
我希望不进入嵌套循环。
我有一个类型为X的对象,字段类型为W,E,R。
我还有一个X类型的对象列表。
我的问题是 - 如果我会问,(myobj in L)
如果列表中有X类型的对象,它会返回True,还是
仅当L中存在类型为X的对象时才返回True,具有相同的W,E,R
myobj的?
=======================编辑:====================== ================
我第一次运行上面的代码(即L中的obj),
for log in logs[first_users[0]]:
self.assertTrue(log in first_users[0].get_log())
对于上面的代码我收到一个错误,因为我有一个不在
的日志first_users [0] .get_log()(一个对象不同)
然后我跑了:for log in first_users[0].get_log():
self.assertTrue(log in logs[first_users[0]])
我没有得到任何错误 - 这很好。
我甚至尝试更改日志中的特定对象:
for log in first_users[0].get_log():
log.obj = None
log.save()
self.assertTrue(log in logs[first_users[0]])
它仍然没有通过错误 - 这是不好的
答案 0 :(得分:1)
浏览this。它是关于类中运算符重载的页面。找到你需要的功能!
编辑:您需要实现__eq__
来检查两个对象的成员是否相等。
例如:
class Foo:
def __init__(self, val):
self.val = val
def __eq__(self, other):
if self.val == other.val:
return True
return False
l = [Foo(i) for i in range(10)]
print(Foo(2) in l)
print(Foo(100) in l)
输出:
True
False
您可以选择不检查所有成员,只比较与您有关的成员。