On Oct 28, 6:01 am, Donn Ingle <[EMAIL PROTECTED]> wrote: > Hello, > > Is there a way I can, for debugging, access the instance variable name from > within a class? > E.g: > Class X: > def debug(self): > print "My instance var is %s" % (some magic Python stuff) > > So that: > > >>>x = X() > >>>x.debug() > >>>My Instance var is x > > ( Without passing the name in like: x=X(name="x") )
You could search the global and local namespaces of the caller for a symbol that's bound to the same object as self. For instance, to find a such a symbol in the caller's global namespace, this might work: def debug(self): for sym,value in sys._getframe(1).f_globals: if value is self: print "My instance var is %s" % sym Improving the example left as an exercise. There's probably quite a few recipes to do stuff like this in the Python Cookbook (quod googla). Also, note that some objects are not bound to any symbols but instead are referenced by lists or other containers. Carl Banks -- http://mail.python.org/mailman/listinfo/python-list