9

pickle/を使用してシリアル化され、ディスクに格納されている多数のオブジェクトがあるプロジェクトに取り組んでいますcPickle

プロジェクトの存続期間が進むにつれて(現場の顧客にリリースされた後)、将来の機能/修正により、永続化されたオブジェクトの一部の署名を変更する必要が生じる可能性があります。これは、フィールドの追加、フィールドの削除、またはデータの不変条件の変更でさえあり得ます。

serialVersionUID( Javaのように)特定のバージョンを持つものとしてピクルスにされるオブジェクトをマークする標準的な方法はありますか?基本的に、Fooバージョン234のインスタンスを復元しているが、現在のコードが236である場合、unpickleに関する通知を受け取りたいと思います。先に進んで、独自のソリューションを展開する必要があります(PITAの可能性があります)。

ありがとう

4

2 に答える 2

6

形式にはそのpickleような但し書きはありません。「シリアル バージョン番号」をオブジェクトの属性の一部にして、他の部分と一緒にピクルしてみませんか? 次に、実際のバージョンと目的のバージョンを比較することで、「通知」を簡単に取得できます-なぜそれがPITAである必要があるのか​​ わかりません。

于 2010-03-02T06:20:23.823 に答える