Jul*_*éon 1 python tkinter pickle
为了学习 tkinter,我正在制作一个简单的围棋游戏程序。我现在希望能够使用 pickle 保存游戏,但是当我尝试 pickle 我的GoBoardModel
对象时,我得到:
PicklingError: Can't pickle 'tkapp' object: <tkapp object at 0x01FCB090>
Run Code Online (Sandbox Code Playgroud)
我想这是因为虽然 GUI 和围棋板的模型分离得很好,但模型仍然引用视图来推送一些东西,所以 pickle 可能会尝试腌制一些 tk 东西。当然,我只想 pickle 模型,那么有什么方法可以告诉 pickle 不要关心对 GUI 的引用吗?或者用另一种方法来解决这个问题?
我知道我可以摆脱这个参考,但我来这里是为了学习:)
是的,研究一下__getstate__
方法。
例如,如果您希望 pickle 忽略“view”属性,您可以执行以下操作:
class Whatever(object):
def __getstate__(self):
state = self.__dict__.copy()
del state['view']
return state
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2767 次 |
最近记录: |