【问题标题】:Unpickling a Python class解压 Python 类
【发布时间】:2010-07-16 13:47:27
【问题描述】:

我在尝试解开此类的子类时遇到问题。当我解开它时,东西不在那里。是什么赋予了? 类帐户:

    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"))        

【问题讨论】:

  • 哦,是的,unpickling 部分与它在同一个模块中,并从另一个模块调用。是的,我知道这很糟糕。

标签: python class pickle


【解决方案1】:

你的类是否继承object

无论哪种方式,您都可以通过覆盖__getstate__ 来指定要腌制的内容。否则,如果您继承 object,它通常应该复制 __dict__

【讨论】:

  • 好的。我以为这是给定的。我会试试的,谢谢。通常,python 知道我喜欢什么……
  • 不,没有用。它仍然说它是一个非类型,并且没有属性......
  • 那么...现在可以工作了吗?如果没有,你继承的是什么类?
【解决方案2】:

所以,这就是我刚刚发现的方法 - 我将丑陋的泡菜的东西(见评论)移到了 unpickling 类,导入了我正在酸洗的类,它似乎可以工作。

【讨论】:

  • 很高兴您解决了这个问题,但如果您在此处发布了解决方案,其他人可能会从中受益。
  • 我实际上不确定这些东西现在在哪里,因为我停止使用 pickle 来支持其他形式的序列化。
猜你喜欢
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多