Return name of caller function?
Jay Loden
python at jayloden.com
Tue Jun 26 13:23:00 EDT 2007
Matthew Peter wrote:
> For example, how do I get this to work?
>
> def func():
> print "This is", __?__
> return __caller__
>
> def echo():
> print "This is ", __?__
> return func()
>
>
>>>> print echo()
> This is echo
> This is func
> echo
This may not be what you're looking for but here's the solution I ended up with after some help from the list. It's designed for getting the name of an instance method, but in case it applies to your particular situation:
#!/usr/bin/python
import functools
class TestClass:
def __init__(self):
pass
def __getattr__(self, name):
try:
return getattr(self.__class__, name)
except AttributeError:
return functools.partial(self.foo, name)
def foo(self, name, **args):
print "This is", name
test = TestClass()
test.someMethod()
test.anotherMethod()
Otherwise the inspect module may be the way to go, as Stephen already pointed out (though I must admit it seems a very inelegant route, especially compared to Python's usually clean and clear style).
-Jay
More information about the Python-list
mailing list