检查python列表中的成员资格麻烦

时间:2013-05-13 08:26:32

标签: python list pyqt pyside

我在列表中遇到项目成员资格问题,我无法理解。虽然检查是列表中的一些对象实例(使用简单的“列表中的项目”),但即使实例在列表中,它也会返回False。然后我注意到相同的指针没有相同的Id。

我是否必须使用某种特殊方法或什么?请有人帮我比较实例平等吗。

注意:如果重要的话,所有这种情况都会发生在PySide中。

1 个答案:

答案 0 :(得分:1)

您的对象需要使用__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