On Feb 18, 2010, at 5:28 PM, Stephen Hansen wrote:
On Thu, Feb 18, 2010 at 8:19 AM, Andrey Fedorov
<anfedo...@gmail.com>wrote:
It seems intuitive to me that the magic methods for overriding the
+, -, <, ==, >, etc. operators should have no sideffects on their
operands. Also, that == should be commutative and transitive, that
> and < should be transitive, and anti-commutative.
Is this intuition written up in a PEP, or assumed to follow from
the mathematical meanings?
It may be intuitive to you, but its not true, written down anywhere,
nor assumed by the language, and the mathematical meaning of the
operators doesn't matter to Python. Python purposefully does not
enforce anything for these methods.
Still, it's clear that (for example) '==' is not just a normal
function call. Look at this example (in ipython):
>>> False == False == False
True
>>> True == False == False
False
>>> (True == False) == False
True
Anybody knows how why this is so?
--
http://mail.python.org/mailman/listinfo/python-list