首页 > 解决方案 > 在 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]

标签: pythonpython-3.x

解决方案


推荐阅读