Python:反序列化对象



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

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

这看起来首先获取对象,然后获取类。关于如何处理这个问题的任何想法?

您有三个选择:

  1. 自定义序列化/反序列化 - 可以将版本信息和类信息放在首位。
  2. 创建一个"联合类",其中包含所有类版本的所有成员,然后使用它来创建相应类的实例。
  3. 重构为公共基类,并让每个"版本"继承自该类。

我推荐选项 3,因为这样您的版本可以干净地共存。

最新更新