如何在python中强制创建一个新对象(在本例中为字典)?以下内容应该解释我的问题:
>>> class A():
... def __init__(self, a={}):
... self.a=a
...
>>> id(A().a) == id(A().a)
True
>>> class A():
... def __init__(self, a=dict()):
... self.a=a
...
>>> id(A().a) == id(A().a)
True
>>> class A():
... def __init__(self, a={}):
... self.a=copy.deepcopy(a)
...
>>> id(A().a) == id(A().a)
False
正如你所看到的,前两个方法给了我一个指向同一个空字典的指针,这意味着如果我在一个对象中修改字典,它会在另一个对象中被修改。第三种方法看起来如此"不干净"对我来说。还有其他选择吗?我知道我也可以使用copy.copy,但我更喜欢深度复制,正是出于这些原因。
答案 0 :(得分:2)
这是一个常见的习语:
Arraylist<byte[]>