在这样的事情
class Obj:
def __init__(self, x, y):
self.x = x
self.y = y
li = [Obj(0, 0), Obj(0, 1), Obj(2, 3)]
print(Obj(2,3) in li)
我有一个False输出,因为即使x和y相同,它也会将对象计为另一个实例。我可以使用列表中的循环并检查
来解决问题if(2==o.x and 3==o.y):
return True
是否有一些更简洁的方法可以在不使用循环的情况下获得此功能?
答案 0 :(得分:0)
==
和!=
的特殊方法:
class Obj:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, Object):
""" == comparison method."""
return self.x == Object.x and self.y == Object.y
def __ne__(self, Object):
""" != comparison method."""
return not self.__eq__(self, Object)
答案 1 :(得分:0)
在课堂上实施如下所示的功能__eq__
。
def __eq__(self, x,y):
if self.x==x and self.y==y:
return True
之后使用list comprehension遍历list
个对象。
result = any(Obj(2,3) == i for i in obj_list )