python - 在 python 中,为什么我的实例变量在方法中被引用后会发生变化?
问题描述
在下面的代码中,为什么向量实例a
在 之后会发生变化a.add(b)
?
class Vector:
def __init__(self, arg):
# assign to a var
self._vector = arg
def add(self, arg):
result_vector = self._vector
# add elements
for i in range(len(arg._vector)):
result_vector[i] += arg._vector[i]
return result_vector
def print(self):
print(self._vector)
a = Vector([1, 2, 3])
b = Vector([3, 4, 5])
a.print()
b.print()
print(a.add(b))
a.print()
b.print()
我期待result_vector
包含添加,但这a
将保留其自身的价值。
例如运行此代码输出
[1, 2, 3]
[3, 4, 5]
[4, 6, 8]
[4, 6, 8] # <--- why has a changed?
[3, 4, 5]
解决方案
推荐阅读
- json - Scala 2.12 的 JSON 解析器
- python - 使用 python 包在基于 html 的网站中运行 python 脚本
- python - 如何计算特定时间段内的频率
- angularjs - 在自定义 javascript 元素内设置一个变量作为属性
- vb.net - 如何使用此 FxCopAnalyzer 警告处理属性:“CA2227:通过删除属性的设置器将“图像”设置为只读”
- bash - 在文件中查找子字符串并注释该行并在注释行下方插入新行
- javascript - 无法更新 reactsJs 中的状态
- python - 是否有停止自动关闭括号的快捷键?
- javascript - ReferenceError:在 github 操作上未定义 require
- javascript - 异步 Javascript 混乱