In [1]:
    
import numpy as np
class Vector:
    def __init__(self, vlst):
        self.v = np.array(vlst)
    def toString(self):
        return tuple(self.v).__str__().replace(' ','')
    def add(self, vector):
        try:
            return Vector(self.v + vector.v)
        except:
            print('Error: two vectors with different lengths!')
    def subtract(self, vector):
        try:
            return Vector(self.v - vector.v)
        except:
            print('Error: two vectors with different lengths!')
    def dot(self, vector):
        try:
            return np.dot(self.v, vector.v)
        except:
            print('Error: two vectors with different lengths!')
    def norm(self):
        return np.linalg.norm(self.v)
    def equals(self, vector):
        return np.array_equal(self.v, vector.v)
    
    
a = Vector([1,2,3])
b = Vector([3,4,5])
c = Vector([5,6,7,8])
print(a.add(b).v) # should return Vector([4,6,8])
print(a.subtract(b).v) # should return Vector([-2,-2,-2])
print(a.dot(b)) # should return 1*3+2*4+3*5 = 26
print(a.norm()) # should return sqrt(1^2+2^2+3^2)=sqrt(14)
a.add(c) # raises an exception
    
    
In [2]:
    
a.toString() == '(1,2,3)'
    
    Out[2]: