我在 Python 2.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
,用字符串作为键,但是一旦我将对象添加到somelist
,这些对象也在其他FooBar
s 中。
这不是我期望发生的(我希望它们是分开的),但显然有一个原因 - 请解释这个原因是什么,为什么会发生这种情况,以及我将如何解决它。谢谢!