Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.python
Re: Constraints on __sub__, __eq__, etc.
Chris Rebert
2/19/2010 10:40:00 AM
On Fri, Feb 19, 2010 at 2:30 AM, Roald de Vries <rdv@roalddevries.nl> wrote:
> On Feb 18, 2010, at 5:28 PM, Stephen Hansen wrote:
>> On Thu, Feb 18, 2010 at 8:19 AM, Andrey Fedorov
>> <anfedorov@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?
Python is smart enough to recognize chained comparisons and do The
Right Thing (tm).
`X == Y == Z` is equivalent to `X == Y and Y == Z`. Same goes for the
other comparison operators besides == and also possibly for longer
chains.
Cheers,
Chris
--
http://blog.re...
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Re: Constraints on __sub__, __eq__, etc.
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password