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 lots of parentheses in expressions. Is there a way to "overload" Python's precedences?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With