正确地“pickeling”python子类/子类

2024-06-25 06:57:49 发布

您现在位置:Python中文网/ 问答频道 /正文

为了扩展它的功能,我对scipy.spatial.ckdtree.cKDTree进行了子分类。按照我目前实现它的方式,我无法正确地pickle和unpickle(序列化)这个子类的一个实例,我需要它来使用带有multiprocessing的类

class ccKDTree(cKDTree):

    __doc__ = cKDTree.__doc__

    def __init__(self, *args, **kwargs):
        super(ccKDTree, self).__init__(*args, **kwargs)

    def query_hypershell_point(self, *args):
        """
        Do some stuff with the cKDTree
        """
        return some_data

但是,pickle和unpickle此对象的实例会将数据类型更改为其父类scipy.spatial.ckdtree.cKDTree。毫不奇怪,调用方法query_hypershell_point会抛出一个AttributeError

我的感觉是我必须与__get/setstate__一起工作,但我不知道如何工作


Tags: 实例selfdocinitdefargsscipyquery