Bruno Desthuilliers a écrit : > ianaré a écrit : > >> Hey all, >> >> Is there a way of printing out how a function was called? In other >> words if I do the following: >> >> def someFunction(self): >> self.someOtherFunction(var1, var2) >> >> >> I would get something like "someOtherFunction: called by: >> someFunction, args are: var1, var2" >> >> Thanks in advance >> > You may be able to solve this using a decorator (to avoid polluting your > code with this) and the infamous sys._getframe() hack.
Not even with sys._getframe in fact - or at least not directly !-) import inspect def trace(func): def traced(*args, **kw): f = inspect.currentframe(1) caller = inspect.getframeinfo(f)[2] print "%s : called by %s with %s %s" \ % (caller, func.__name__, str(args), kw) return func(*args, **kw) return traced @trace def test(toto, tata=None): return 42 def call(toto): return test(toto, 24) call("foo") HTH -- http://mail.python.org/mailman/listinfo/python-list