On May 5, 12:24 pm, Duncan Booth <[EMAIL PROTECTED]> wrote: > Szabolcs <[EMAIL PROTECTED]> wrote: > > On May 5, 9:37 am, Szabolcs Horvát <[EMAIL PROTECTED]> wrote: > >> Gabriel Genellina wrote: > > >> > Python doesn't require __add__ to be associative, so this should > >> > not be > > used as a general sum replacement. > > >> It does not _require_ this, but using an __add__ that is not > >> commutative and associative, or has side effects, would qualify as a > >> serious misuse, anyway. > > > Sorry, I meant associative only, not commutative. > > Unfortunately an __add__ which is not associative is actually perfectly > reasonable.
Well, 'reasonable' is a subjective notion in this case :-) I have never seen a non-associative use of the plus sign in maths, so I would tend to take associativity for granted when seeing a + b + c in code, therefore I would avoid such uses. (Multiplication signs are a different story.) Of course others may feel differently about this, and technically there's nothing in the way of using a non-associative __add__! :) > For example you could have a Tree class where adding two trees > returns a new tree so (a+b)+c gives you: > > . > / \ > . c > / \ > a b > > but a+(b+c) gives: > > . > / \ > a . > / \ > b c -- http://mail.python.org/mailman/listinfo/python-list