0

In the following code, why does the vector instance a change after 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()

I was expecting result_vector to contain the addition but that a would retain its own value.

E.g. running this code outputs

[1, 2, 3]
[3, 4, 5]
[4, 6, 8] 
[4, 6, 8] # <--- why has a changed?
[3, 4, 5]
jonrsharpe
  • 115,751
  • 26
  • 228
  • 437
Snowcrash
  • 80,579
  • 89
  • 266
  • 376

0 Answers0