restriction on sum: intentional bug?

Tim Chase python.list at
Mon Oct 19 12:24:01 CEST 2009

Carl Banks wrote:
> Consider this thought experiment:
> class Something(object):
>     def __radd__(self,other):
>         return other + "q"
> x = ["a","b","c",Something()]
> If x were passed to "".join(), it would throw an exception; but if
> passed to a sum() without any special casing, it would successfully
> return "abcq".

Okay...this is the best argument I've heard for not using 
"".join()  {Awards Carl one (1) internet}  It's a peculiar thing 
to do as a programmer, but "".join() certainly produces an 
unexpected behavior which I'd say is worse.  And a lot of this 
discussion has revolved around letting programmers do peculiar 
things if they want.

So as of Carl's example, I'm now pretty solidly in the "Stop 
throwing an exception, just sum the parts even if it's 
inefficient" camp and no longer straddling between that and the 
"".join() camp.  But I'm definitely still not in the "throwing 
exceptions is a good thing" camp.


More information about the Python-list mailing list