Почему не отрабатывает метод radd?

class PiggyBank:
    def __init__(self, coins):
        self.coins = coins

    def __repr__(self):
        return f'PiggyBank({self.coins})'
    
    def __add__(self, other):
        return NotImplemented

    def __radd__(self, other):
        print('Вызов метода __radd__()')


    bank1 = PiggyBank(10)
    bank2 = PiggyBank(20)
    print(bank1 + bank2)

Насколько я понял сначала происходит bank1.__add__(bank2)- если возвращается NotImplemented или метод просто отсутствует, тогда должен отработать bank2.__radd__(bank1).


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

__radd__ не будет вызван для аргументов одного типа.

#object.__radd__:

object.__radd__(self, other)

...

These functions are only called if the left operand does not support the corresponding operation [3] and the operands are of different types.

→ Ссылка