【问题标题】:__sleep() like method in Python__sleep() 类似 Python 中的方法
【发布时间】:2014-09-05 09:41:57
【问题描述】:

我想知道是否有像 __sleep() magic function(来自 PHP)这样的东西用 Python 实现。

我遇到了一个类的问题,Python 说它不是 JSON 可序列化的,我想从类中的魔术方法返回一个简单的字典,以便我的一个库可以成功调用 json.dumps on它。 (我无法控制执行序列化的代码行,正如我所说,它是在库中完成的)

【问题讨论】:

  • 你能修改它或影响传递给json.dumpsobj吗?
  • @SimeonVisser 是的,这是我创建的自定义对象。
  • 库是否需要与您的对象进行交互,还是只是json.dumps 它?在后一种情况下,您始终可以在将对象提供给库之前将其转换为可转储的对象。
  • 看看这里:stackoverflow.com/questions/3768895/… 接受的答案建议使用 JSONEncoder。也许它会帮助你编码你的对象。您可以将此 JSONEncoder 子类作为自定义类的成员
  • @Duncan 这就是我最终所做的。在我的对象上创建了一个to_dict 方法,并将其作为参数传递给进行编码的方法,另一方面,我正在从字典中填充该类的一个新实例。如果您愿意发表评论作为答案,我很乐意接受。

标签: python serialization


【解决方案1】:

不幸的是,如果您无法控制对json.dumps() 的调用,这将很棘手。如果你这样做了,有很多方法可以解决这个问题(最明显的是通过在子类 JSON 编码器中实现 default 函数)。

在您的特定情况下,您最好在将对象传递给库之前将其转换为可序列化的形式。这样,当json.dumps() 被调用时,您的输入可以被序列化而不会出错。这假定库不需要与您的对象交互并简单地转储它。

【讨论】:

    猜你喜欢
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2020-07-31
    • 2012-09-05
    • 1970-01-01
    • 2017-03-11
    相关资源
    最近更新 更多