林有點新的與python和我有一個任務創建一個類「UndoList」(類型列表)與撤消() - 方法。此方法應該取消像典型的列表操作,追加,插入,刪除...如何實現一個撤消() - 在Python中的列表類的方法
>>> ul = UndoList([1,2,3])
>>> ul.append(4), print(ul), undo(ul), print(ul)
[1,2,3,4]
[1,2,3]
>>> ul.remove(3), print(ul), undo(ul), print(ul)
[1,2]
[1,2,3]
...
此撤銷() - 方法只能撤銷一次操作(如u可以看到的例子)。我的老師給我提示,在每次操作之前保存實例中的列表值。
這是我的課:
class UndoList(list):
def __init__(self, lis):
list.__init__(self, lis)
self.lis = []
def __append__(self, lis):
list.__add__(self, lis)
return lis
def undo(self):
return self
a1 = UndoList([1,2,3])
print(a1), a1.append(4), print(a1) #[1,2,3] [1,2,3,4]
a1.undo(), print(a1) #[1,2,3,4]
所以現在我的問題:我怎麼能在我的課,以節省我的實際列表創建一個實例。我做任何操作之前?是否有可能在我的撤消方法中重新運行此實例?
謝謝!
那麼,你想讓我們爲你解決你的課程練習嗎? – yorodm
你應該實現某種「歷史」屬性。 – MSeifert
你的意思是說你只需要支持一個級別的撤消? –