如何从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))会工作。


以上是如何从python列表中删除类对象?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>