Je suis un peu nouveau avec python et j'ai eu la tâche de créer une classe "UndoList" (liste de type) avec une méthode undo(). Cette méthode doit annuler typiques liste-opérations comme, append, insérer, supprimer ...Comment implémenter un undo() - Méthode pour une classe List en 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]
...
Cette undo() - méthode ne doit annuler une opération (comme u peut voir dans l'exemple). Mon professeur m'a donné l'indice, pour sauvegarder la valeur de la liste dans l'instance avant chaque opération.
Ceci est ma classe:
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]
Alors maintenant ma question: comment puis-je créer une instance dans ma classe pour sauver ma liste réelle avant que je ne importe quelle opération? Et est-il possible de simplement retruner cette instance dans ma méthode d'annulation?
Merci!
Alors, voulez-vous que nous résolvions votre exercice de classe pour vous ??? – yorodm
vous devez implémenter une sorte d'attribut 'history'. – MSeifert
Voulez-vous dire que vous avez seulement besoin de supporter un seul niveau d'annulation? –