proglog

主にプログラミングに関する断片的メモ

memcacheではまったこと

ちょっとした用途でlistクラスのサブクラスを作った。
で、それをmemcacheに入れて使おうとした。
そしたら「そのクラスに、○○という属性はない」とかいうエラーが出るようになった。

調べてみると、以下のような感じ。

  • gaeのmemcacheはpickleを使う。
  • unpickleしてデータを復元する時、__init__()は呼ばない。
  • リストなどのデータの復元はobj.append()を使ったりする。

そう、そのサブクラスはオブジェクトの○○プロパティーを見てappendメソッドの挙動を変える、というものだった。
つまり、その時点でまだオブジェクトにくっついてない○○という属性を参照できない、というエラーだった。

で、カスタマイズしたappendメソッドを、○○という属性がなければ普通にappendという処理に変更。

ソースはこんな感じ。