hier mal etwas Pseudo-Code einer Anwendung des Pickleprotokols, weil schon einige Male Zweifel an dessen Nützlichkeit aufgetaucht sind . Dies hier beschreibt das Pickling und Unpickling von Klasseninstanzen in Verbindung mit classmethod, was u.U. einige Zeilen Code sparen und mancher grauen Zelle das Leben retten kann (wie kann ich verdammtnochmal meine Klasse einfach initialisieren??? ):
Code: Alles auswählen
import pickle
class SomeClass:
def __init__(self, name, somedata):
self.name = name
self.somedata = somedata
#und was man sonst noch so in __init__ machen kann
def toFile(self, fname):
pickle.dump(self, open(fname, 'wb'), 2) #binäres Picklingprotokoll
#Python2.4 Syntax:
@classmethod
# oder @staticmethod , wenn 'cls' nicht gebraucht wird
def fromFile(cls, fname):
return pickle.load(open(fname, 'rb'))
#das zurückgegebene Objekt entspricht der Klasseninstanz
#weiteres Rummachen mit cls ist also unnötig
#oder classmethod-Definition in Python2.3 Syntax
#fromFile = classmethod(fromFile)
Code: Alles auswählen
from SomeClass import SomeClass
x = SomeClass(name="somename",somedata="somedata")
x.toFile('test.dat')
#raus aus Python und wieder rein
from SomeClass import SomeClass
x = SomeClass.fromFile('test.dat')
Gruß,
Christian
edit: Vorschläge vom 27.10.07 eingearbeitet.
edit: nochmals korrigiert am 28.10.07
edit: Korregiert am 29.10.07