On Aug 20, 2009, at 11:07 PM, josef wrote:

To begin, I'm new with python. I've read a few discussions about
object references and I think I understand them.

To be clear, Python uses a "Pass By Object Reference" model.
x = 1
x becomes the object reference, while an object is created with the
type 'int', value 1, and identifier (id(x)). Doing this with a class,
x = myclass(), does the same thing, but with more or less object
attributes. Every object has a type and an identifier (id()),
according to the Python Language Reference for 2.6.2 section 3.1.

x in both cases is the object reference. I would like to use the
object to refer to the object reference.

Stop right there. 'x' is not *the* object reference. It is *an* object reference (or in my preferred terminology, a label). Suppose you do:

x = myclass()
y = x

The labels 'x' and 'y' both refer to the same object with equal precedence. There is no mapping from object back to label; it is a one-way pointer. Also importantly, labels themselves are not objects, and cannot be accessed or referred to.

(This is a slight oversimplification; thanks to Python's reflection and introspection capabilities, it is possible to access labels to some extent, and in some limited situations it is possible to use stack inspection to obtain a label for an object. But this is hackish and error-prone, and should never be used when a more Pythonic method is available.)

The following is what I would like to do:
I have a list of class instances dk = [ a, b, c, d ], where a, b, c, d
is an object reference. Entering dk gives me the object: [MyClass0
instance at 0x0000, MyClass1 instance at 0x0008, MyClass2 instance at
0x0010 ... ]

I need the object reference name (a,b,c,d) from dk to use as input for
a file.

It sounds like you should either be storing that name as an attribute of the object, or using a dictionary ({'a': a, 'b': b, ...}).

-Miles

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to