Магический метод Python __mul__используется для реализации операции умножения (*) для пользовательских объектов. Когда вы используете оператор *между двумя объектами, Python внутренне вызывает метод __mul__объекта левого операнда и передает правый операнд в качестве аргумента. Это позволяет вам определить собственное поведение для умножения в ваших классах.
Вот пример, демонстрирующий использование метода __mul__:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __mul__(self, other):
if isinstance(other, (int, float)):
return Point(self.x * other, self.y * other)
elif isinstance(other, Point):
return Point(self.x * other.x, self.y * other.y)
else:
raise TypeError("Multiplication not supported between Point and {}".format(type(other)))
def __str__(self):
return "Point({}, {})".format(self.x, self.y)
p1 = Point(2, 3)
p2 = Point(4, 5)
result1 = p1 * 2
result2 = p1 * p2
print(result1) # Output: Point(4, 6)
print(result2) # Output: Point(8, 15)
В приведенном выше примере у нас есть класс Point, представляющий точку в 2D-пространстве. Метод __mul__определен для обработки умножения либо на скалярное значение (целое число или с плавающей запятой), либо на другой объект Point. Он выполняет умножение покомпонентно и возвращает новый объект Point.
Метод __str__также определен для предоставления строкового представления объекта Point.
Волшебный метод: реализация умножения для пользовательских объектов”
, умножение, пользовательские объекты, перегрузка операторов