我遇到了列表中的项目成员资格问题,我无法理解。虽然检查列表中的某个对象实例(带有简单的“列表中的项目”),但即使该实例在列表中,它也会返回 False。然后我注意到相同的指针没有相同的 ID。
我必须使用一些特殊的方法还是什么?任何人都可以帮助我比较实例相等性,请。
注意:如果重要的话,所有这些情况都会发生在 PySide 中。
您的对象需要有一种__eq__
方法来定义如何比较对象是否相等。
In [18]: class A(object):
...: def __init__(self, n):
...: self.n = n
...:
In [19]: class B(object):
...: def __init__(self, n):
...: self.n = n
...: def __eq__(self, other):
...: return self.n == other
...:
In [20]: a = A(1)
In [21]: b = B(1)
In [22]: a in [A(n) for n in range(10)]
Out[22]: False
In [23]: b in [B(n) for n in range(10)]
Out[23]: True
In [24]: b in [B(n) for n in range(10, 20)]
Out[24]: False