1. ホーム
  2. python

[解決済み] ピクルスの漬け方は?

2023-06-20 20:24:48

質問

自分のクラスに、単にクラスのpickleを行うSave関数とLoad関数を実装したいのです。しかし、どうやら以下のような方法で 'self' を使用することはできないようです。どうすればいいのでしょうか?

self = cPickle.load(f)

cPickle.dump(self,f,2)

どのように解決するのですか?

結局こうなりました。を更新して __dict__ を更新するということは、私がクラスに追加した新しいメンバー変数を保持し、オブジェクトが最後に pickle'd されたときにそこにあったものを更新するだけということです。クラス自体の内部で保存と読み込みのコードを維持しながら、呼び出しコードが単にobject.save()を実行するだけなので、これは最もシンプルに見えます。

def load(self):
    f = open(self.filename, 'rb')
    tmp_dict = cPickle.load(f)
    f.close()          

    self.__dict__.update(tmp_dict) 


def save(self):
    f = open(self.filename, 'wb')
    cPickle.dump(self.__dict__, f, 2)
    f.close()