pickle和tkinter的问题

时间:2011-05-12 01:36:13

标签: python tkinter pickle

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

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

我想这是因为虽然GUI和go板的模型分离得很好,但是模型仍然有一个对视图的引用以便推送一些东西,所以pickle可能试图腌制一些tk东西。当然我想腌制模型,所以有没有办法告诉pickle不关心GUI的引用?还是另一种解决问题的方法?

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

1 个答案:

答案 0 :(得分:4)

是的,请查看__getstate__方法。

例如,如果您希望pickle忽略“view”属性,则执行以下操作:

class Whatever(object):

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