繁体   English   中英

检查Python列表中的成员资格问题

[英]Checking membership in python list trouble

我在列表中遇到了项目成员资格的问题,我无法理解。 检查列表中的某个对象实例(带有简单的“列表中的项目”)时,即使实例在列表中,它也会返回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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM