Эти функции
blockquote>__radd__
вызывается только в том случае, если левый операнд не поддерживает соответствующую операцию, а операнды имеют разные типы. Например,class X: def __init__(self, num): self.num = num
class Y: def __init__(self, num): self.num = num def __radd__(self, other_obj): return Y(self.num+other_obj.num) def __str__(self): return str(self.num)
>>> x = X(2) >>> y = Y(3) >>> print(x+y) 5 >>> >>> print(y+x) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-60-9d7469decd6e> in <module>() ----> 1 print(y+x) TypeError: unsupported operand type(s) for +: 'Y' and 'X'