How can I know the name of "caller"
zacherates at gmail.com
Tue Jun 19 22:56:08 CEST 2007
> ...(if it is possible) how can I get, from method "called", the name
> of function/method that called it (in this case "caller")?
The traceback module will give you access to the call stack.
>>> import traceback
>>> def foo():
... return traceback.extract_stack()
>>> def bar():
... return foo()
[('<stdin>', 1, '<module>', None), ('<stdin>', 2, 'foo', None)]
[('<stdin>', 1, '<module>', None), ('<stdin>', 2, 'bar', None),
('<stdin>', 2, 'foo', None)]
However, this seems like one of those it-matters-where-you-call-it-
from functions from days of yore. They're generally considered to be
a bad idea and was one of the patterns that prompted a rather famous
essay by Dijkstra.
I'd recommend exploring other design alternatives and leave this
monstrosity in peace.
More information about the Python-list