python:反序列化对象

时间:2012-04-23 14:48:59

标签: object deserialization

我们有这种形式的类classA version1, classA version2, classA version3 ..等等。这是经过修改的同一个类。每个“修改”都会创建一个类的新版本。每个对象都有一个version属性,该属性引用从中派生它的类的版本。例如ObjectA.version =1#表示它来自ClassA version1

这是我的问题。在对象反序列化期间,我想使用用于制作对象的类的特定版本。例如,如果我使用ObjectA反序列化对象version=3,则应使用ClassA version 3。存储所有类的不同变体的源代码。

这看起来先得到对象获取类。有关如何处理此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

您有三种选择:

  1. 自定义序列化/反序列化 - 您可以先放置版本信息和类信息。
  2. 创建一个“union class”,其中包含所有类版本的所有成员,然后使用它来创建相应类的实例。
  3. 重构为公共基类,并使每个“版本”继承自该类。
  4. 我建议选项3,因为那时你的版本可以干净利落地共存。