11 Арифметические операции (Практика)

Сложение int и float вернет float

1 + 0.5 # 1.5

Сложение float и float вернет float

1.0 + 0.5 # 1.5

Умножение int и float возвращает тоже float

2 * 1.125 # 2.25

Деление возвращает float

18 / 4 # 4.5

Возведение в степень

2 ** 8 # 256

Можно возводить в отрицательную степень. Это будет равнозначно записи 2 / 8 ** 2

2 ** (-8) # 0.00390625

Квадратный корень

4.0 ** 0.5 # 2.0

Можно даже получить квадратный корень из отрицательного числа. Тогда вернется комплексное число

(-4) ** 0.5 # (1.2246467991473532e-16+2j)

Сложение 2-х целых чисел

1 + 2 # 3

На самом деле Python выполняет операцию __add__

a = 1
a.__add__(2) # 3

Не все объекты могут складываться. Например есть класс вектор

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

    def __repr__(self):
        return f'Vector({self.x}, {self.y})'

Создание 2-х векторов

v1 = Vector(1, 1)
v2 = Vector(2, 3)

Если сложить векторы, то получим ошибку

v1 + v2 # TypeError: unsupported operand type(s) for +: 'Vector' and 'Vector'

Но так как Vector это класс, который мы создали сами, то мы можем в нем реализовать метод __add__

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

    def __add__(self, other):
        if isinstance(other, Vector):
            return Vector(self.x + other.x, self.y + other.y)

    def __repr__(self):
        return f'Vector({self.x}, {self.y})'

Снова создам 2 вектора

v1 = Vector(1, 1)
v2 = Vector(2, 3)

И в этом случае результат сложения векторов сработает

v1 + v2 # Vector(3, 4)