如何在 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,但我更喜欢 deepcopy,正是出于这些原因。
最佳答案
这里有一个常见的习语:
def __init__(self, a=None):
if a is None:
a = {}
...
关于python - python强制创建新的内存对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39019686/