Subclassed attributes are not serializable · Issue #10553 · pandas-dev/pandas (original) (raw)
In a subclass of pandas objects, pickling an object doesn't serialize properties of an instance of that subclass, even if the attribute has been added to _metadata
. It would be hard to override this behavior entirely in the subclass, because it will require updates to __getstate__
and __setstate__
, and probably also an addition or subclass of BlockManager
. It would be nice if the _metadata
serialization was handled in the base pandas class.
Example:
class SubDataFrame(DataFrame):
_metadata = ['my_data']
@property
def _constructor(self):
return SubDataFrame
sdf = SubDataFrame()
sdf.my_data = 'foo'
sdf.to_pickle('tmp.pkl')
new_sdf = read_pickle('tmp.pkl')
new_sdf.my_data
raises AttributeError: 'SubDataFrame' object has no attribute 'my_data'
(edited original example for correctness)