python - 为什么python关联映射成员变量在对象之间共享

标签 python

对于类A,为什么对象和对象b共享aMap成员变量?

>>> class A:
...     aMap = {}

>>> a = A()
>>> a.aMap["hello"] = 1

>>> b = A()
>>> b.aMap["world"] = 2

>>> c = []
>>> c.append(a)
>>> c.append(b)

>>> for i in c:
...     for j in i.aMap.items():
...         print j
('world', 2)  
('hello', 1)  
('world', 2)  
('hello', 1)  

最佳答案

因为您将其定义为类属性,而不是实例属性。

如果你希望它作为实例属性而不是在实例之间共享,你必须这样定义它:

class A(object):
    def __init__(self):
        self.aMap = {}

关于python - 为什么python关联映射成员变量在对象之间共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2299801/

相关文章:

javascript - jQuery - 在发布请求中传递数组

python - 来自 Django 中查询集的查询集

python - 将图像转换为数组时,反之亦然,是否有必须考虑的额外注意事项?

python - 其他列的南迁移默认值?

python - numpy 中的内置函数以按位方式将整数解释为 bool 值数组?

python - 斐波那契程序在第 40 个任期后挂起

python - 有没有办法在 Python 中创建 "Not a number"if 语句?

c# - 是否有与 Python 的 unhexlify 等效的 C#?

python - 创建一个对象,该对象的方法延迟到另一个对象执行 [Python]

python - 包含最大值的列的名称