Finding the instance reference of an object [long and probably boring]

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Fri Nov 7 23:21:07 EST 2008


On Fri, 07 Nov 2008 13:05:16 -0700, Joe Strout wrote:

> In Python, AFAICT, there is only one type, the object reference.  So,
> the type of every variable is 'reference', and each one contains a
> reference.

This is wrong. If we take "variable" to mean "name", then Python names do 
not have types. But *objects* have types, and there are many of them:

>>> a = 23; type(a)
<type 'int'>
>>> a = "foo"; type(a)
<type 'str'>
>>> a = []; type(a)
<type 'list'>

But a name that isn't bound to an object doesn't have a type:

>>> del a; type(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

The type information is associated with the object, not with the name.

It is possible that, in the C implementation, there is a C-type 
'reference' and all(?) C variables relating to the implementation of 
namespaces have that type. Possibly. But even if true, that's the wrong 
level of description.


-- 
Steven



More information about the Python-list mailing list