Python - Как мне выполнять операции над своим классом в обоих направлениях? - PullRequest
0 голосов
/ 19 июня 2020

Например, пусть мой class = object

, когда я делаю print(object * int), все идет хорошо

Однако, когда я делаю print (int * object). Я получаю сообщение об ошибке, при котором мой объект класса не может быть добавлен к объекту int. Можно ли решить эту проблему без изменения типов данных по умолчанию?

1 Ответ

1 голос
/ 19 июня 2020

Если вы переопределите __mul__, вы можете вызвать print (object * int).

Если вы переопределите __rmul__, вы можете вызвать print (int * object).

Когда записывается a * b, приоритет отдается вызову a .__ mul __ (b), а если это не реализовано, вызывает b .__ rmul __ (a)

...