On Fri, 2005-01-21 at 16:13 -0800, Andrà wrote: > Short version of what I am looking for: > > Given a class "public_class" which is instantiated a few times e.g. > > a = public_class() > b = public_class() > c = public_class() > > I would like to find out the name of the instances so that I could > create a list of them e.g. > ['a', 'b', 'c'] > > I've read the Python Cookbook, Python in a Nutshell, Programming > Python, Learning Python, ... googled (probably missed something > obvious), all to no avail.
Yep. The short answer is that the instances don't have names - they're just bound to names in a particular scope. They can be bound to different names in the same scope or in other scopes. You can get a dictionary for a particular scope using locals() then search it to find the key for a given value. That key will be the name the object is bound to in that scope. In general, you won't want to do that - the need to do so probably suggests a design issue in what you're trying to do. > If I can do the above, I believe I could do the following thing which > is what I am really after eventually. > > Given the statement > > >> a = public_class() > > I would like to generate > > >> my_dict['a'] = private_class() > > so that one could write > > >> a.apparently_simple_method() > > and that, behind the scene, I could translate that as > > >> my_dict['a'].not_so_simple_method() I'm not clear as to why you can't do this as part of the class of which 'a' is an instance. > as well as do things like > > >> for name in my_dict: > >> do_stuff(name) > > Any help, pointers, sketches or outline of solution would be greatly > appreciated. I'm not really able to grasp what you're trying to do (but others might). It wouldn't hurt if you could post a description of what you're actually trying to achieve - /why/ you want this - as that can often be very helpful both in understanding what you're thinking and in suggesting a suitable approach or alternative. -- Craig Ringer -- http://mail.python.org/mailman/listinfo/python-list