A class question

Bruno Desthuilliers bruno.42.desthuilliers at wtf.websiteburo.oops.com
Mon Oct 29 12:19:18 EDT 2007


Hrvoje Niksic a écrit :
> Bruno Desthuilliers <bruno.42.desthuilliers at wtf.websiteburo.oops.com>
> writes:
> 
>> The problem is that your formulation implies (to me at least) that the
>> variable is actually a kind of container for the object.
> 
> I really didn't expect it to be read that way, especially since the
> sentence claims that the same instance can reside in several
> variables.  If the term variable implied containment, that would not
> be possible because different variables would imply different objects.
> 
> To be fair, the OP probably *did* confuse variables with containment,
> and I rot13'ed my hack to avoid unnecessarily prolonging that
> confusion.  However, I don't think his confusion is a consequence of
> inaccurate terminology, but of an inaccurate mental model of Python
> objects.

I'd think it has more to do with an inaccurate mental model of Python's 
variables - hence my (perhaps useless) corrections.

>  When the mental model is correct, the term "variable" works
> as well as any other; when it's incorrect, using different words for
> the same thing is of little help.

This is where our POV differ. IMHO, wording and mental model have a 
strong relationship - IOW, incorrect wording leads to incorrect 
representation.

>>>> Python's "variables" are name=>object bindings.
>>> No reason to use quotes. 
>> Yes, there's one : to mark the difference between Python-like
>> name=>object bindings and C-like labels-on-memory-address variables
>> the latter model being the most commonly known to beginners.
> 
> Are you sure about the last part?

Ok, I would not bet my hand on it !-) But the (non appliable) "pass by 
value"/"pass by reference" question is still asked often enough here to 
be an indication.

>  It seems to me that in recent times
> more Python beginners come from a Java background than from a C one.

Java does have "container" variables for primitive types, and even for 
"references", Java's variables are more than names - they do hold type 
informations too. Now I don't pretend to know how this is really 
implemented, but AFAICT, and at least from a cognitive POV, Java's 
variables model looks very close to the C/C++ model.

FWIW, I came to Python with a VB/C/Java/Pascal background, and Python 
was the first language for which I needed to revise my mental model of 
the "variable" concept.

> In any case, "variable" is a sufficiently general concept not to be
> tied to a specific implementation.

I'd say it's like the "type" concept : it's a general concept, but it's 
not totally implementation-independant. "Type" doesn't mean exactly the 
same thing in static or dynamic languages...

>  That the concept of variable
> differs among programming languages is for me not reason enough to
> eschew it.

I didn't mean to imply "variable" was an inappropriate term - just that 
it may have a somewhat different meaning wrt/ some others more 
mainstream languages. My humble experience is that rewording the whole 
concept in terms of name=>object bindings did sometime help in the past.




More information about the Python-list mailing list