   Python string can be added using plus symbol as if strings were numbers. You can define addition to class object using `__add__` function.

``````class Vector:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z

x = self.x + other.x
y = self.y + other.y
z = self.z + other.z
return Vector(x, y, z)

u = Vector(1, 2, 3)
v = Vector(4, 5, 6)

w1 = u + v

print(w1.x, w1.y, w1.z)  # 5 7 9
print(w2.x, w2.y, w2.z)  # 5 7 9
``````

Vector class is the original class and the object has 3 properties, x, y, z. This class defines `__add__` method so the vector object can be added like Python number or string.

w1 and w2 are the same. The form `u+v` is exactly addition!

## Subtraction

`__sub__` is a subtraction method that enables the object subtraction as follows.

``````class Vector:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z

x = self.x + other.x
y = self.y + other.y
z = self.z + other.z
return Vector(x, y, z)

def __sub__(self, other):
x = self.x - other.x
y = self.y - other.y
z = self.z - other.z
return Vector(x, y, z)

u = Vector(1, 2, 3)
v = Vector(4, 7, 10)

w = v - u

print(w.x)  # 3
print(w.y)  # 5
print(w.z)  # 7
``````

## Multiplication

`__mul__` is a multiplication method. The following example shows how to define the function calculating the inner product of vectors with multiplication overriding.

``````class Vector:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z

x = self.x + other.x
y = self.y + other.y
z = self.z + other.z
return Vector(x, y, z)

def __sub__(self, other):
x = self.x - other.x
y = self.y - other.y
z = self.z - other.z
return Vector(x, y, z)

def __mul__(self, other):
return self.x * other.x + self.y * other.y + self.z * other.z

u = Vector(1, 2, 3)
v = Vector(1, 1, 1)

w = v * u

print(w)  # 6
``````