[Python-Dev] Getting values stored inside sets
Nick Coghlan
ncoghlan at gmail.com
Sat Apr 4 03:54:51 CEST 2009
Paul Moore wrote:
> 2009/4/3 R. David Murray <rdmurray at bitdance.com>:
>> a == b
>>
>> So, python calls a.__eq__(b)
>>
>> Now, that function does:
>>
>> a.key == b
>>
>> Since b is an object with an __eq__ method, python calls
>> b.__eq__(a.key).
>
> That's the bit I can't actually find documented anywhere.
It doesn't quite work the way RDM desribed it - he missed a step.
a == b
So, python calls a.__eq__(b)
Now, that function does:
a.key == b
which first calls a.key.__eq__(b) # This step was missing
Since str has no idea what an Element is, that returns NotImplemented.
Since __eq__ is defined as being commutative, the interpreter then tries
b.__eq__(a.key).
That function does:
b.key == a.key
which calls b.key.__eq__(a.key)
which is a well defined string comparison and returns the expected answer.
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
---------------------------------------------------------------
More information about the Python-Dev
mailing list