I have overloaded some Python operators, arithmetic and boolean. The Python precedence rules remain in effect, which is unnatural for the overloaded operators, leading to lo
You can cheat that mechanism in this way:
_
function).Example:
>>> a = MyNumber(5); b = MyNumber(2); c = MyNumber(3)
>>> a + b * c
MyExpression([MyNumber(5), '+', MyNumber(2), '*', MyNumber(3)])
Brackets:
>>> a + _(b * c)
Note that _
is a function that evaluates expression (in order you enforce in it)
So if you reverse priorites you will get:
>>> _(a + b * c)
MyNumber(21)
PS. Django does similar trick with Q
and F
operators.
No. It's part of the python language itself. Thats how the language parses.
Official quote: Evaluation order
Python evaluates expressions from left to right. Notice that while evaluating an assignment, the right-hand side is evaluated before the left-hand side.
Other quotes:
Python:Basics:Numbers and operators
When performing mathematical operations with mixed operators, it is important to note that Python determines which operations to perform first, based on a pre-determined precedence. This precedence follows a similar precedence to most programming languages.
Python Programming/Operators
Note that Python adheres to the PEMDAS order of operations.