2013-05-13 58 views
1

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

我必须使用一些特殊的方法或什么?请有人帮我比较实例平等吗?

注意:如果它很重要,那么PySide就会发生这种情况。

回答

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