我想繼承并修改Python串列類,以增加額外的功能--即一個洗掉某個元素所有實體的方法:
我想繼承并修改Python串列類,以增加額外的功能--即一個洗掉某個元素所有實體的方法。
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),串列會被自動更新。
我怎樣才能在我的新繼承類中加入這種功能--即當我輸入 l.rm_all(1) 時,串列會自動更新?
我想我需要重新分配self,但是我想不出來。
uj5u.com熱心網友回復:
由于它是list的元類,你可以嘗試用以下方法改變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,2] )
l.rm_all(1)
print(l)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/320075.html
標籤:
