Ahmad Qassym Ответов: 1

Может ли кто-нибудь сказать разницу между __mul__ и __rmul__? .........


✞ ☎
class Point2D :
...
    def __mul__ ( self , other ):
        if isinstance ( other , Point2D ): # scalar product
             return self .x * other .x + self .y * other .y
        elif isinstance ( other , numbers . Number ): # scalar multiplication
             return Point2D ( other * self .x , other * self .y )
        else :
             return NotImplemented

    def __rmul__ ( self , other ):
       if isinstance ( other , numbers . Number ):
           return Point2D ( other * self .x , other * self .y )
       else :
           return NotImplemented

>>> p1 = Point2D(1,0)
>>> p1.x, p1.y
(1, 0)
>>> p2 = p1 * 42 # multiply p1 with a number
>>> p2.x, p2.y # yields a point
(42, 0)
>>> w = p1 * p2 # multiply two points
>>> w # yields a number
42
>>> p3 = 3 * p1 # multiply a number with a point
>>> p3.x, p3.y # yields a point
(3, 0)


Что я уже пробовал:

__mul__ и _ _ rmul__,...............................

Patrice T

Вы когда-нибудь задумывались о том, чтобы прочитать документацию ?

1 Ответов

Рейтинг:
1

Maciej Los

Как уже упоминала Патрис ти вы должны читать документация[^].

Я бы посоветовал прочитать вот это:
Python - Специальные Методы Числового Типа[^]
python - при каких обстоятельствах __rmul__ называется? - переполнение стека[^]