Python(2.5)のシェル IDLE で遊んでみた。
Pythonにはオブジェクトのインスタンスを、漬物文字列に変換したり、ファイルに保存するために、pickleというモジュールがある。JavaやC#にも似たような機能があるのだが、手軽さでPythonのpickleには及ばない。
まずは、「import pickle」でpickleモジュールをインポートする。すると、「pickle.dumps(X)」でXを漬物にできる。
- pickle.dumps(1) → 'I1\n.' #整数1の漬物
- pickle.dumps('1') → "S'1'\np0\n." #文字「1」の漬物
- a = [1,2,3]
pickle.dumps(a) → '(lp0\nI1\naI2\naI3\na.' #リストaの漬物 - class unko:
def __init__(self,jotai):
self.jotai = jotai
a = unko('dorodoro')
pickle.dumps(a) → "(i__main__\nunko\np0\n(dp1\nS'jotai'\np2\nS'dorodoro'\np3\nsb." #jotaiが'dorodoro'であるunkoの漬物)
pickle.dumps(unko) → 'c__main__\nunko\np0\n.' #あれぇ? unkoの漬物であるはずだが、unkoにjotaiプロパティがあることなどなどは含まれていない。単に名前だけ。 - pickle.dumps(pickle.dumps) → 'cpickle\ndumps\np0\n.' #pickle.dumpsそのものの漬物のはずだが、これも名前だけ。
クラスのインスタンスは漬物にできるが、クラスそのものは本物の漬物にはできない。モジュールに含まれるメソッドも無理。