What does it mean for an object to be picklable (or pickle-able)?

Python docs mention this word a lot and I want to know what it means! Googling doesn't help much..


Solution 1:

It simply means it can be serialized by the pickle module. For a basic explanation of this, see What can be pickled and unpickled?. Pickling Class Instances provides more details, and shows how classes can customize the process.

Solution 2:

Things that are usually not pickable are, for example, sockets, file(handler)s, database connections, and so on. Everything that's build up (recursively) from basic python types (dicts, lists, primitives, objects, object references, even circular) can be pickled by default.

You can implement custom pickling code that will, for example, store the configuration of a database connection and restore it afterwards, but you will need special, custom logic for this.

All of this makes pickling a lot more powerful than xml, json and yaml (but definitely not as readable)