如何在函数内部获取函数名?

如何在函数内部获取函数名?

最近用PYTHON写了几个函数,这些函数都要调用到同一个函数A,A函数需要调用者的函数名字串作为参数传入.不知有没有办法在函数内部得到函数名?
如:
def abc(...):
    ...
    A('abc')#此处传函数名
    ...
def asff(...):
    ...
    A('asff')#此处传函数名
   ...
...
A是怎么实现的呢?
def A(f)
...
getattr(f, '__name__')
...
A(abc)
这样处理不行吗?


QUOTE:
原帖由 moatlzy 于 2008-11-22 22:39 发表
这些函数都要调用到同一个函数A,A函数需要调用者的函数名字串作为参数传入.不知有没有办法在函数内部得到函数名?
如:
def abc(...):
    ...
    A('abc')#此处传函数名
    ... ...

这还用想什么办法?你定义的函数你不知道叫什么名字?
当然是__name__比较方便和正规
主要是有很多函数要调用A,我是这样想的,每次都写函数名字串给A作参数,以后可能会改函数名,这样的话,函数里面也要再去改一次,呵呵,想偷懒一下,改函数名时不对函数体有影响!


[Copy to clipboard] [ - ]
CODE:
def after_func_run(func):
    def _func(*args,**kw):
          result=func(*args,**kw)
          print func.__name__
          return result
    return _func

@after_func_run
def printwords(s):
      print s

printwords("test")



QUOTE:
原帖由 moatlzy 于 2008-11-23 11:47 发表
主要是有很多函数要调用A,我是这样想的,每次都写函数名字串给A作参数,以后可能会改函数名,这样的话,函数里面也要再去改一次,呵呵,想偷懒一下,改函数名时不对函数体有影响!

果然是为了改名问题。我一般是这样处理的,笨人笨办法。
class AA():
    def __init__(self):
        pass
    def aa(self,fn):
        print "nnnn",fn
        
class F1(AA):
    def __init__(self):
        print "f1",
        self.aa("__init__")
        
class F2(AA):
    def __init__(self):
        print "f2",
        self.aa("__init__")

if __name__=="__main__":
    F1()
    F2()