Python2.7.2で奇妙な動作が発生します。
クラスのディクショナリがある場合、それらのクラス内のリストは、含まれているディクショナリ内のすべてのクラスインスタンスを通じて同じ値のままになります。
これは私が何を意味するかを説明します:
>>> class FooBar():
somelist = []
>>> someFooBars = {}
>>> someFooBars["key1"] = FooBar()
>>> someFooBars["key2"] = FooBar()
>>> someFooBars["key3"] = FooBar()
>>> someFooBars["key1"].somelist.append("Hello")
>>> someFooBars["key1"].somelist
['Hello']
>>> someFooBars["key2"].somelist
['Hello']
>>> someFooBars["key1"].somelist.append("World!")
>>> someFooBars["key3"].somelist
['Hello', 'World!']
ご覧のとおり、FooBar
文字列でキー設定されたの3つのインスタンスで辞書を埋めましたが、オブジェクトをに追加するとsomelist
、オブジェクトは他FooBar
のsにも含まれます。
これは私が期待することではありませんが(私はそれらが別々になることを期待しています)、明らかに理由があります-この理由が何であるか、なぜこれが起こるのか、そして私がそれをどのように修正するのか説明してください。ありがとう!