Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 泡菜和开胃菜的问题_Python_Tkinter_Pickle - Fatal编程技术网

Python 泡菜和开胃菜的问题

Python 泡菜和开胃菜的问题,python,tkinter,pickle,Python,Tkinter,Pickle,为了学习tkinter,我正在制作一个简单的围棋游戏程序。我现在希望能够使用pickle保存游戏,但是当我尝试pickle我的GoBoardModel对象时,我得到: PicklingError: Can't pickle 'tkapp' object: <tkapp object at 0x01FCB090> PicklingError:无法pickle'tkapp'对象: 我猜这是因为尽管GUI和go board的模型非常分离,但模型仍然有一个视图引用,以便推送一些内容,所以

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

PicklingError: Can't pickle 'tkapp' object: <tkapp object at 0x01FCB090>
PicklingError:无法pickle'tkapp'对象:
我猜这是因为尽管GUI和go board的模型非常分离,但模型仍然有一个视图引用,以便推送一些内容,所以pickle可能会尝试pickle一些tk内容。当然,我只想pickle模型,那么有没有办法告诉pickle不要关心对GUI的引用?还是另一种解决问题的方法


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

是的,研究一下
\uu getstate\uuu
方法

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

class Whatever(object):

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

是的,看看
\uu getstate\uu
方法

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

class Whatever(object):

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