Any way to override the and operator in Python?

Question:

I tried overriding __and__, but that is for the & operator, not and – the one that I want. Can I override and?

Asked By: airportyh

||

Answers:

Not really. There’s no special method name for the short-circuit logic operators.

Answered By: S.Lott

You cannot override the and, or, and not boolean operators.

No you can’t override and and or. With the behavior that these have in Python (i.e. short-circuiting) they are more like control flow tools than operators and overriding them would be more like overriding if than + or -.

You can influence the truth value of your objects (i.e. whether they evaluate as true or false) by overriding __nonzero__ (or __bool__ in Python 3).

Answered By: dF.

Although you can’t overload __and__ you can use infix to overload and. You would use &and& to represent the and operator in this case.

Answered By: Flying_Squirrel
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.