Finding the instance reference of an object
steve at holdenweb.com
Fri Nov 7 06:52:06 CET 2008
Joe Strout wrote:
> First, I want to thank everyone for your patience -- I think we're
> making progress towards a consensus.
>> But putting that aside, consider the Python
>> code "x = 1". Which statement would you agree with?
>> (A) The value of x is 1.
> Only speaking loosely (which we can get away with because numbers are
> immutable types, as pointed out in the last section of ).
I'd agree this is a valid way to describe the post-condition of the
>> (B) The value of x is an implementation-specific thing which is
>> determined at runtime. At the level of the Python virtual machine, the
>> value of x is arbitrary and can't be determined.
> Hmm, this might be true to somebody working at the implementation level,
> but I think we're all agreed that that's not the level of this
> discussion. What's relevant here is how the language actually behaves,
> as observable by tests written in that language.
I'd actually say "x contains a reference to 1", claim that was
equivalent to (A) above and cite Humpty Dumpty as my justification .
>> If you answer (A), then your claim that Python is call-by-value is false.
>> If you answer (B), then your claim that Python is call-by-value is true
>> but pointless, obtuse and obfuscatory.
> Correct again. My answer is:
> (C) The value of x is a reference to an immutable object with the value
> of 1. (That's too wordy for casual conversation so we might casually
> reduce this to (A), as long as we all understand that (A) is not
> actually true. It's a harmless fiction as long as the object is
> immutable; it becomes important when we're dealing with mutable objects.)
I am unsure here as to why you find it necessary to refer to 1's
immutability. How does this alter the essence of the situation?
> Not that I'm trying to argue from authority; I'm trying to argue from
> logic. I suspect, though, that your last comment gets to the crux of
> the matter, and reinforces my guess above: you don't think c-b-v means
> what most people think it means. Indeed, you don't think any of the
> languages shown at  are, in fact, c-b-v languages. If so, then we
> should focus on that and see if we can find a definitive answer.
You're right. Observable progress, I think.
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC http://www.holdenweb.com/
More information about the Python-list