Finding the instance reference of an object

Joe Strout joe at strout.net
Mon Nov 10 16:39:58 CET 2008


On Nov 10, 2008, at 8:30 AM, Terry Reedy wrote:

>> That hinges on what exactly is meant by "changes to
>> the arguments".
>
> Mutating them, like Python does, which is why calling Python CBV  
> leads people to write buggy code.
>
> >In Python it can only mean assigning
>> directly to the bare name -- anything else isn't
>> changing the argument itself, but something else to
>> which the argument refers.
>
> Hogwash.  The argument is the object and mutable objects can be  
> changed as seen by the caller.

By that definition, Java, REALbasic, C++, and VB.NET are all call-by- 
reference too (even when explicitly using the "ByVal" keyword in RB/ 
VB.NET).  This will come as quite a shock to the designers and users  
of those languages.

For what it's worth, I think Greg (double-quoted above) has it exactly  
right.  The argument in any of these languages is an object reference;  
changing the object and changing the object reference are two  
different things.

Best,
- Joe




More information about the Python-list mailing list