Official definition of call-by-value (Re: Finding the instance reference...)

Steven D'Aprano steven at REMOVE.THIS.cybersource.com.au
Tue Nov 18 02:38:47 EST 2008


On Sun, 16 Nov 2008 23:34:58 -0500, Terry Reedy wrote:

> Steven D'Aprano wrote:


>>>>> class EqualsAll(object):
>> ...     def __eq__(self, other):
>> ...             return True
>> ...
>>>>> 5 == EqualsAll()
>> True
>> 
>> 
>> The methods of 5 don't even get called.
> 
> Why do you say that?  As I read the manual, type(left-operand).__eq__ is
> called first.

Ah, I could be confabulating that with arithmetic operators __add__ etc. 
It may be that comparisons use a different mechanism:

>>> 5 .__cmp__(EqualsAll())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: int.__cmp__(x,y) requires y to be a 'int', not a 'EqualsAll'



-- 
Steven



More information about the Python-list mailing list