有问题的人

2024-10-01 15:45:35 发布

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

为了学习tkinter,我做了一个简单的围棋程序。我现在希望能够使用pickle保存游戏,但是当我尝试pickle我的GoBoardModel对象时,我得到:

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

我想这是因为尽管GUI和go-board的模型很好地分开了,但是为了推一些东西,模型仍然引用了视图,所以pickle可能会尝试pickle一些tk内容。当然,我只想pickle模型,那么有什么方法可以告诉pickle不要关心GUI的引用?或者另一种解决问题的方法?在

我知道我可以摆脱这个参考资料,但我是来学习的:)


Tags: 对象方法模型程序游戏goobjecttkinter
1条回答
网友
1楼 · 发布于 2024-10-01 15:45:35

是的,看看__getstate__方法。在

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

class Whatever(object):

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

相关问题 更多 >

    热门问题