Overloading the "and" operator

Terry Reedy tjreedy at udel.edu
Sun Mar 13 15:37:20 EST 2005


"Fredrik Bertilsson" <fredrik_bertilsson at passagen.se> wrote in message 
news:31f7e57d.0503122133.b9073e1 at posting.google.com...
>I am trying to overload the "and" operatior, but my __and__ method is
> never called.

That is because, properly speaking, 'and' and 'or' are, in Python, in-line 
flow-control keywords (related to 'if' and 'else'),  and not operators. 
Operators are abbreviated function calls.  For binary operators, this means 
evaluating both left and right operands and then calling the function, 
which may hook into a special method, as you tried to do.  'And' and 'or', 
on the other hand, try to avoid evaluating the right expression.

Terry J. Reedy







More information about the Python-list mailing list