Pythonは継承ができる.
ところがこれは実際には,MROチェーンが繋がっているだけのようだ.
つまり自己破壊型の場合,親クラスのクラス変数を上書きしてしまうことになる.
# coding:utf-8 class A(object): a_dict = {1:"a"} print A.a_dict class B(A): a_dict = A.a_dict.copy() a_dict.update({2:"b"}) print B.a_dict print A.a_dict
お望みどおり,簡単に破壊できた.
リファレンス代入なんだろうねぇ?
リストなら "+" で繋げば良さそうだけど,辞書に追加して,かつ,新しい辞書を作るってどうやるの?
一番簡単には copy() すればいいけど,これで合ってるの?正確にはdeepcopy() だけど,それでOK?
http://docs.python.org/library/copy.html#copy.deepcopy
a_dict = A.a_dict.copy()
他の基礎型が加算(__add__())が使えるのに,dictだけ使えないのは不思議だなぁ.
defaultdict とか使えばできるのかしらん?