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" .alpha.apparently_simple_method() .beta.apparently_simple_method() ================================= 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.... André -- http://mail.python.org/mailman/listinfo/python-list