jojoba wrote: > However, does it not seem reasonable to ask python: > > Given a dicitionary, Banana = {} > return one or more strings, > where each string is the name(s) of the reference(s) to Banana. > > why is this not sane?!?! > what am i missing here?
Some time back I posted some code which would do exactly that, but it is not nice, and it is buggy, but if you want to play with it: http://groups.google.co.uk/group/comp.lang.python/tree/browse_frm/thread/394ba5b48f83ebfb/237dc92f3629dd9a >>> import varname >>> Banana = {} >>> class C: ... classFruit = [{}, Banana] ... >>> def names(x): ... for s in varname.object_info(x): ... print s ... >>> names(Banana) __main__.C.classFruit[1] __main__.Banana __main__.names()x The problem as others have said is that there are a lot of namespaces in Python (module globals, classes, instances, local variables of active functions, ...), and the only way to find which names refers to an object is to search the relevant namespaces. There is some information which can help: for any object you can get a list of all objects that refer to it, and that can be used to trace backwards until you find a namespace at which point you still have to search the namespace to find out which name refers to the object. Of course doing all this creates lots of new references and infinite loops both of which you have to ignore. -- http://mail.python.org/mailman/listinfo/python-list