如何从python列表中删除类对象?
假设我有一个类(Base)和一个列表(obj)
class Base:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Base({self.x}, {self.y})"
def area(self):
return self.x*self.y
obj = [Base(10, 12), Base(2, 5), Base(7, 8)]
如何从 obj 列表中删除 Base(2, 5)?该obj.remove(Base(2,5))不起作用。有什么建议?
回答
list.remove 需要能够判断要删除的元素何时与列表中的元素之一相同。
所以你可以__eq__按照这些方式实现一个方法:
class Base:
def __eq__(self, other):
if not isinstance(other, Base):
return NotImplemented
return self.x, self.y == other.x, other.y
并且obj.remove(Base(2,5))会工作。