also, ich benutze im moment syck (und damit verbunden ydump), hier mal ein funktionierendes beispiel :
Code: Alles auswählen
import syck,ydump
execvar = {}
exec "a = 5" in execvar
exec "print a" in execvar
gedumpt = ydump.dump(execvar)
execvar = {}
execvar = syck.load(gedumpt)
exec "print a" in execvar
das funktioniert, ich kann execvar dumpen und wieder laden, die ausgabe ist 2 mal "5".
aber folgendes funktioniert wiederum nicht:
Code: Alles auswählen
import syck,ydump
execvar = {}
exec """class myclass:
def hallo(self):
print 'hallo'
""" in execvar
exec "myclassobject = myclass()" in execvar
exec "myclassobject.hallo()" in execvar
gedumpt = ydump.dump(execvar)
execvar = {}
execvar = syck.load(gedumpt)
exec "myclassobject.hallo()" in execvar
ausgabe ist folgende :
>>> execfile("picklepython.py")
hallo
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "picklepython.py", line 13, in ?
exec "myclassobject.hallo()" in execvar
File "<string>", line 1, in ?
AttributeError: 'dict' object has no attribute 'hallo'
in execvar befindet sich die gesamte "umgebung" (also alle variablen/objekte usw.) des benutzten exec-befehls, und dieses execvar will ich speichern können.
ich hoffe jetzt ist es verständlicher, was ich machen will.
danke noch für die ganzen antworten !
--edit--: ok, ich hab mal ausprobiert, auch objekte, die nicht in der exec-umgebung erstellt wurden, zu dumpen, sobald s ne benutzerdefinierte klasse ist, funktioniert s nicht mehr .. son mist