如何用哈希表中的类来修改字典?

2024-05-16 22:23:20 发布

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

所以我有一个带有类列表(TestEVAL)的程序,我使用QMdiArea在子窗口中显示多个类数据。我正在尝试增强pickle以包含QSubwindow数据,该数据存储在其子窗口小部件中,代码如下:

    with open(fname, 'wb') as fout:
        for dataset in self.datasets:
            # Temp save chdlg - do not want saved
            ochdlg = dataset.chdlg
            dataset.chdlg = None
            pickle.dump(dataset, fout)
            # Restore chdlg
            dataset.chdlg = ochdlg
        pickle.dump('plots', fout)
        for sub in self.mdi.subWindowList():
            mw = sub.widget()
            old_plot = dict()
            old_plot['title'] = sub.windowTitle()
            old_plot['setup'] = mw.setup
            pickle.dump(old_plot, fout)
            pickle.dump(mw.channels, fout)
    fout.close()

这时我得到一个:

Traceback (most recent call last): File "TestEVAL.pyw", >line 1448, in saveas_session pickle.dump(mw.channels, fout) File "AppData\Local\Continuum\Anaconda\lib\copy_reg.py", >line 71, in _reduce_ex state = base(self) TypeError: the sip.wrapper type cannot be instantiated or sub-classed

自微波通道是一个dict,其哈希值来自自我数据集(不是一个简单的物体)我想我需要做更多的事情?也许我需要实现一个.setstate()和.getstate()(在前面和后面加上“\”)但我不明白它在getstate中返回什么。dataset类很大,所以我不想复制它的pickle信息。我可以加一个数据集.id然后把这些杂凑起来微波通道[数据集.id]但我不清楚。此外,微波通道[dataset]=values和values是另一个类(头)的列表,其中有关联的元状态(不太大的数据)。我该怎么办?你知道吗


Tags: 数据inself列表forplotdumpdataset