python - python强制创建新的内存对象

标签 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,但我更喜欢 deepcopy,正是出于这些原因。

最佳答案

这里有一个常见的习语:

def __init__(self, a=None):
  if a is None:
    a = {}
  ...

关于python - python强制创建新的内存对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39019686/

相关文章:

python - “系列”对象没有属性“values_counts”

c - C 中的结构数组参数

改变指针的值

javascript - 为什么输入错误: error: Uncaught TypeError: Cannot read property 'indexOf' of undefined

javascript - HTML5 Canvas : going from shapes to objects?

python - Python 中的算法计时

Python - 将正整数拆分为数组的快速方法

python - 使用 python 从 fasta 文件中删除句点

c++ - 为什么使用指针交换值不起作用?

java - 多维对象数组行为