【发布时间】:2017-11-01 16:22:02
【问题描述】:
我对 python 有点陌生,我有一个任务是使用 undo() 方法创建一个类“UndoList”(类型列表)。此方法应该撤消典型的列表操作,例如追加、插入、删除...
>>> 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]
...
这个 undo() 方法应该只撤消一个操作(如您在示例中所见)。我的老师给了我提示,在每次操作之前将列表的值保存在实例中。
这是我的课:
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]
所以现在我的问题是:如何在我的类中创建一个实例来保存我的实际列表,然后再进行任何操作?是否可以在我的撤消方法中重新运行此实例?
谢谢!
【问题讨论】:
-
那么,你想让我们为你解决你的课堂练习吗?
-
你应该实现某种
history属性。 -
你的意思是只需要支持单级undo?
-
@PM2Ring 没错。我只需要撤消一个操作
标签: python list python-3.x class undo