Ich möchte einfach eine Instanz einer Klasse mit pickle abspeichern und später wieder laden.
hier ein möglichst vereinfachtes Beispiel:
Code: Alles auswählen
import pickle
class Point():
def __init__(self):
self.x = 0
self.y = 0
def __str__(self):
return ('x: ' + str(self.x) + " " + 'y: ' + str(self.y))
def save_point(self):
file = open ("test.bin", "wb")
pickle.dump (self, file)
def open_point(self): ###brauch ich da ein "self"? gehört "open_point()" überhaupt in die Klasse?
data = open("test.bin", "rb")
### und jetzt?! wie kann ich sagen "nimm 'data' und tu das als neue Instanz p1 nehmen"?
Code: Alles auswählen
>>> p1 = Point()
>>> p1.x = 5
>>> p1.y = 7
>>> print(p1)
x: 5 y: 7
Code: Alles auswählen
>>>p1.save_point()
>>>
Code: Alles auswählen
>>>p1.x = 18
>>>p1.y = 84
>>> print(p1)
x: 18 y: 84
Code: Alles auswählen
>>>p1.open_point() ###??? p1 wird eigtl. nicht benötigt...
wenn ich innerhalb(!) der open_point-Methode die Zeile "print (data) hinzufüge, dann kommt:
Code: Alles auswählen
<_io.BufferedReader name='test.bin'>