泡菜和tkinter的问题

发布于 2021-01-29 15:02:50

要学习tkinter,我正在制作一个简单的Go游戏程序。我现在希望能够使用泡菜保存游戏,但是当我尝试泡菜时,我GoBoardModel得到:

PicklingError: Can't pickle 'tkapp' object: <tkapp object at 0x01FCB090>

我猜这是由于以下事实:尽管GUI和go
board的模型被很好地分开了,但是该模型仍然具有对视图的引用以推送某些内容,因此pickle可能会尝试腌制一些tk的内容。当然,我只想对模型进行腌制,是否有任何方法可以使腌制不在乎对GUI的引用?还是解决该问题的另一种方法?

我知道我可以摆脱这个参考,但是我在这里学习:)

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    是的,看看__getstate__方法。

    例如,如果您希望泡菜忽略“视图”属性,则可以执行以下操作:

    class Whatever(object):
    
      def __getstate__(self):
        state = self.__dict__.copy()
        del state['view']
        return state
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看