Python Glossary English

все 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Сообщить о неточности