What is the best way to write a __getstate__ method that pickles almost all of an object\'s attributes, but excludes a few?
I have an object wi
For the your specific case (preventing a function from getting pickled), use this:
self.__class__.fn = self.__class__.my_func
Now, instead of adding a function to an instance of a class, you've added it to the class itself, thus the function won't get pickled. This won't work if you want each instance to have its own version of fn.
My scenario was that I wanted to selectively add get_absolute_url to some Django models, and I wanted to define this in an abstract BaseModel class. I had self.get_absolute_url = … and ran into the pickle issue. Just added __class__ to the assignment solved the issue in my case.