who called a function?
laurent.pointal at laposte.net
Wed Nov 21 22:03:57 CET 2001
[posted and mailed]
<kosh at aesaeion.com> wrote in
news:mailman.1005800061.13841.python-list at python.org:
> How can I find out what object called a function and essentially step
> back through that? At most I need to step back about 4 to 5 levels but
> it would be very useful for me to find a particular object back up the
> list and change behavior based on that. Mostly I just wants the self
> var as I step back until I find the one I want.
I have a module with functions dealing with this (Python 2.1):
def framerecextractfctmod (frame) :
"""return function name and module name from a frame record.
Return a tuple (function name,module name).
info = inspect.getframeinfo(frame)
fctname = info
modfilename = info
if modfilename != None :
modname = inspect.getmodulename (modfilename)
modname = ""
And you call it with things like:
frame = sys._getframe (1)
name,module = framerecextractfctmod (frame)
See _getframe documentation:
Return a frame object from the call stack. If optional integer depth is
given, return the frame object that many calls below the top of the stack.
If that is deeper than the call stack, ValueError is raised. The default for
depth is zero, returning the frame at the top of the call stack.
This function should be used for internal and specialized purposes only.
More information about the Python-list