finding name of instances created

André andre.roberge at
Sat Jan 22 02:57:48 CET 2005

Using the method suggested by Steven Bethard, I *almost* got it working
the way I would like.
Here's my program:
.class PrivateClass(object):
.    dict = {}
.    def not_so_simple_method(self):
.        for name in PrivateClass.dict.keys():
.            if PrivateClass.dict[name] == self:
.                print "instance " + name + " called not so simple"
.    apparently_simple_method = not_so_simple_method

.    def __init__(self):
.        print "instance created"
.        for name, value in globals().iteritems():
.            if isinstance(value, PrivateClass):
.                PrivateClass.dict[name] = value

.def public_class():
.    return PrivateClass()

.print "=== start==="
.alpha = public_class()
.print "created alpha"
.print PrivateClass.dict
.print "### alpha is not there\n"

.beta = public_class()
.print "created beta"
.print PrivateClass.dict
.print "### we are always one behind in the dict content\n"

The output follows:
=== start===
instance created
created alpha
### alpha is not there

instance created
created beta
{'alpha': <__main__.PrivateClass object at 0x0117CDD0>}
### we are always one behind in the dict content

instance alpha called not so simple
Note that instance beta was never recognized when it called "apparently
simple method".

I'm sure there must be a way to do this....


More information about the Python-list mailing list