强制创建新的内存对象python

时间:2016-08-18 13:36:37

标签: python pointers object

如何在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,但我更喜欢深度复制,正是出于这些原因。

1 个答案:

答案 0 :(得分:2)

这是一个常见的习语:

Arraylist<byte[]>