在继承的 class 数据结构中更新自身

Update self in an inherited class data structure

我想继承和修改 Python 列表 class 以添加额外的功能 - 即删除元素的所有实例的方法:

class NewList(list):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.__list__ = self

    def rm_all(self, qw):
        rm = [x for x in self if x != qw]
        return rm

所以,如果我这样做:

l = NewList([1,2,1,3,2,1,2,1,3,1,1,2])`
print(l.rm_all(1))

输出为:

[2, 3, 2, 2, 3, 2]

但是,列表保持不变(我需要调用 l = l.rm_all(1) 来更新)。而在 Python 列表中,如果我使用 l.remove(2),列表会自动更新。

如何将这种功能合并到我新继承的 class - 即当我输入 l.rm_all(1) 时列表会自动更新?

我想我需要重新分配 self 但我想不通。

因为它是 list 的元 class,您可以尝试使用以下方法更改 self 的值:

class NewList(list):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.__list__ = self

    def rm_all(self, qw):
        self[:] = [x for x in self if x != qw]

l = NewList([1,2,1,3,2,1,2,1,3,1,1,2])
l.rm_all(1)
print(l)