ich bin schon seit einer Weile dabei so ein Memento Pattern in Python zu machen aber ich komm irgendwie nicht mehr klar. Dass ich das letzte mal irgendetwas programmiert habe ist schon etwas her..
Hier mal das uml:
http://www.dofactory.com/patterns/Diagrams/memento.gif
Ich habe bis jetzt dies:
Code: Alles auswählen
class Originator:
def __init__(self,state):
self.state= state
def CreateMemento(self):
return Memento(self.state)
def SetMemento(self,memento):
self.state = memento.GetState()
def hochzaehln(self):
self.state+="1"
return self.state
class Memento:
def __init__(self,state):
self.state = state
def GetState():
return self.state
class Caretaker:
#def __init__(self,state)
#self._state = state
def Create(self,originator):
originator.CreateMemento()
def Set(self,originator,memento):
originator.SetMemento(memento)
def GetMemento(self,originator):
return originator.state
auto=Originator("3")
abfrage=Caretaker()
einmemento=abfrage.Create(auto)
#print auto.state
#print abfrage.GetMemento(auto)
auto.hochzaehln()
#print abfrage.GetMemento(auto)
abfrage.Set(auto,einmemento)
print abfrage.GetMemento(auto)
Ich wollte nun hinkriegen, dass der Status von auto zuerst 3 ist und ein memento davon erzeugt wird. Dann wird dieser "hochgezaehlt" wobei 31 rauskommt. Danach soll der status von auto durch das memento wieder auf 3 gesetzt werden...
Doch diese Meldung kommt...Ich hoffe das ist das letzte Problem..
------------------------------------------------------------------------------------
Traceback (most recent call last):
File "C:\..\Memento Design
Pattern\mementotest1.py", line 39, in <module>
abfrage.Set(auto,einmemento)
File "C:\..\Memento Design
Pattern\mementotest1.py", line 28, in Set
originator.SetMemento(memento)
File "C:\..\Memento Design
Pattern\mementotest1.py", line 10, in SetMemento
self.state = memento.GetState()
AttributeError: 'NoneType' object has no attribute 'GetState'