Operator commutativity

Arnaud Delobelle arnodel at gmail.com
Mon Sep 19 13:17:22 CEST 2011


On 19 September 2011 12:11, Henrik Faber <hfaber at invalid.net> wrote:
> Hi there,
>
> when I have a python class X which overloads an operator, I can use that
> operator to do any operation for example with an integer
>
> y = X() + 123
>
> however, say I want the "+" operator to be commutative. Then
>
> y = 123 + X()
>
> should have the same result. However, since it does not call __add__ on
> an instance of X, but on the int 123, this fails:
>
> TypeError: unsupported operand type(s) for +: 'int' and 'X'
>
> How can I make this commutative?

Overload X.__radd__() as well

HTH

-- 
Arnaud



More information about the Python-list mailing list