finding name of instances created
Craig Ringer
craig at postnewspapers.com.au
Fri Jan 21 19:29:24 EST 2005
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
More information about the Python-list
mailing list