[Tutor] Pickling objects and then carrying on development (original) (raw)
Tim Peters tim.peters at gmail.com
Fri Jul 2 17:19:02 EDT 2004
- Previous message: [Tutor] Pickling objects and then carrying on development
- Next message: [Tutor] Pickling objects and then carrying on development
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
[Adam]
OK - I have a kind of strange question. I'm developing an application which acts as a catalogue for magazine articles, storing each piece of information in an OO manner. I've written those objects to disk through pickle, which is an enormously cool feature of python.
My question relates to the pickled object and also the code that relates to those objects. If I enter data in and pickle this data, and then later develop my code adding more methods and functionality to each class, will the old data automatically gain all this new functionality when it is unpickled later?
Yes, it will. pickle stores only data, never code. This isn't a necessary behavior, it's just how things are. The code that makes up your class is not pickled. Instead, when an instance of your class is pickled, the path to your class (its module and class name) is pickled, as a string. Unpickling effectively imports the (current) class code via the path in that string.
Note that this may not always be what you want, though. For example, if you rename your class, or move your class into a different module or package, then you'll no longer be able to load old pickles referencing that class (using its former name or location).
The sequence would be: 1) Data entry and pickle... 2) Develop and improve code 3) Load data 4) continue with data entry 5) pickle once more
Does the new pickle pick up all the new code that I've been working on,
Yes, but because the code was never in the pickle, just the data, and a string recording from where to import the class.
- Previous message: [Tutor] Pickling objects and then carrying on development
- Next message: [Tutor] Pickling objects and then carrying on development
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]