Printable string for 'self'

Michael Spencer mahs at telcopartners.com
Wed Mar 15 03:13:52 CET 2006


Don Taylor wrote:
> Is there a way to discover the original string form of the instance that 
> is represented by self in a method?
> 
> For example, if I have:
> 
> 	fred = C()
> 	fred.meth(27)
> 
> then I would like meth to be able to print something like:
> 
> 	about to call meth(fred, 27) or
> 	about to call fred.meth(27)
> 
> instead of:
> 
> 	about to call meth(<__main__.C instance at 0x00A9D238>, 27)
> 
> Thanks in advance,
> 
> Don.
> 
In general, this requires exhaustive search of name bindings e.g.,:

 >>> def get_names_of(obj, ns):
...     return [name for name, value in ns.iteritems() if value is obj]
...
 >>> class A(object):
...     def global_names_bound_to_me(self):
...         return get_names_of(self, globals())
...
 >>> a = A()
 >>> a.global_names_bound_to_me()
['a']
 >>> b = a
 >>> a.global_names_bound_to_me()
['a', 'b']
 >>>

HTH
Michael




More information about the Python-list mailing list