Access class instance "name" dynamically in Python

Posted by user328317 on Stack Overflow See other posts from Stack Overflow or by user328317
Published on 2010-04-28T22:35:28Z Indexed on 2010/04/28 22:37 UTC
Read the original article Hit count: 258

Filed under:

In plain english: I am creating class instances dynamically in a for loop, the class then defines a few attributes for the instance. I need to later be able to look up those values in another for loop.

Sample code:

class A: def init(self, name, attr): self.name=name self.attr=attr

names=("a1", "a2", "a3") x=10 for name in names: name=A(name, x) x += 1 ... ... ... for name in names: print name.attr

How can I create an identifier for these instances so they can be accessed later on by "name"?

I've figured a way to get this by associating "name" with the memory location:

class A: instances=[] names=[] def init(self, name, attr): self.name=name self.attr=attr A.instances.append(self) A.names.append(name)

names=("a1", "a2", "a3") x=10 for name in names: name=A(name, x) x += 1 ... ... ... for name in names: index=A.names.index(name) print "name: " + name print "att: " + str(A.instances[index].att)

This has had me scouring the web for 2 days now, and I have not been able to find an answer. Maybe I don't know how to ask the question properly, or maybe it can't be done (as many other posts seemed to be suggesting).

Now this 2nd example works, and for now I will use it. I'm just thinking there has to be an easier way than creating your own makeshift dictionary of index numbers and I'm hoping I didn't waste 2 days looking for an answer that doesn't exist. Anyone have anything?

Thanks in advance, Andy

Update: A coworker just showed me what he thinks is the simplest way and that is to make an actual dictionary of class instances using the instance "name" as the key.

© Stack Overflow or respective owner

Related posts about python