反序列化Python类

0 投票
2 回答
551 浏览
提问于 2025-04-16 01:24

我在尝试解压这个类的子类时遇到了问题。当我解压时,里面的内容没有了。这是怎么回事呢?

类名是 Account:

    def __init__(self, server, port, smtp_server, smtp_port):
        self.server = server
        self.port = port
        self.smtp_server = smtp_server
        self.smtp_port = smtp_port

        self.save()

    def save(self):
        #save account for later loading
        self.name = tkFileDialog.asksaveasfilename(title = "Save as..")
        pickle.dump(self, open(self.name, "wr"))        

2 个回答

0

所以,我刚刚搞明白了这个问题——我把那些难看的 pickle 相关的东西(见评论)移动到了反序列化的类里面,导入了我之前序列化的类,结果好像可以正常工作了。

1

你的类是否继承了 object 呢?

无论如何,你都可以通过重写 __getstate__ 方法来指定你想要保存的内容。否则,如果你的类是继承自 object 的话,通常会复制 __dict__ 的内容。

撰写回答