все Python 3ООПфункция
__mul__
магические методы
Метод оператора *: a * b вызывает a.__mul__(b); отражённый __rmul__ срабатывает для 3 * a.
Синтаксис
def __mul__(self, other): ...
def __rmul__(self, other): ...
Умножение на число с обеих сторон требует двух методов: __mul__ для v * 3 и __rmul__ для 3 * v — у int нет способа умножиться на ваш объект, и он вернёт NotImplemented. Последовательности используют __mul__ для повторения: [0] * 3 — это list.__mul__.
Примеры
class Vec:
def __init__(self, x, y):
self.x, self.y = x, y
def __mul__(self, k):
return Vec(self.x * k, self.y * k)
__rmul__ = __mul__
def __repr__(self):
return f'Vec({self.x}, {self.y})'
print(Vec(1, 2) * 3) # → Vec(3, 6)
print(3 * Vec(1, 2)) # → Vec(3, 6) — сработал __rmul__
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности