parse-time optimizations
jcm
grumble at usa.net
Thu May 31 22:32:10 EDT 2001
Roeland Rengelink <r.b.rigilink at chello.nl> wrote:
> For right associative, use __radd__:
> class X:
> def __radd__(self, other):
> print 'Hi', other
> return X()
> x = X()
> y = 1+2+3+x
> giving:
> Hi 6.
This is still left associative (the "1+2" happens first, instead of
the "3+x"). It's just that the custom object is on the right side of
an operator.
> Python's evaluation is left to right, Hence
The + operator has this behavior (left associativity). The **
operator, on the other hand, is right-associative.
> y = 1+2+3+x
> equals
> y = 6+x
> Since 6+x raises a TypeError, this will be evaluated using
> y = x.__radd__(6)
> Roeland
More information about the Python-list
mailing list