On Aug 21, 1:34 am, Miles Kaufmann <mile... at umich.edu> wrote:
> 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
It would not make sense to do that in the context of the software I am
writing. The documentation will specifically state not to do that. If
the user does do that, then the user will be disappointed and possibly
angry.
>> 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.
I would just like to store the name of the one way pointer.
>> (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.)
Hackish is fine. How error-prone is this method?
>> > 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, ...}).
That solution was mentioned in some of the discussions I read, but I
would like to stay away from something like: a = MyClass
(name='a', ...). Is it possible to assign an object reference name in
a class __init__ defintion?