要学习tkinter我正在制作一个简单的Go游戏程序。我现在希望能够使用泡菜来保存游戏,但是当我尝试挑选我的GoBoardModel
对象时,我得到了:
PicklingError: Can't pickle 'tkapp' object: <tkapp object at 0x01FCB090>
我想这是因为虽然GUI和go板的模型分离得很好,但是模型仍然有一个对视图的引用以便推送一些东西,所以pickle可能试图腌制一些tk东西。当然我想腌制模型,所以有没有办法告诉pickle不关心GUI的引用?还是另一种解决问题的方法?
我知道我可以摆脱这个参考,但我在这里学习:)
答案 0 :(得分:4)
是的,请查看__getstate__
方法。
例如,如果您希望pickle忽略“view”属性,则执行以下操作:
class Whatever(object):
def __getstate__(self):
state = self.__dict__.copy()
del state['view']
return state