如何获得动态创建的方法的名称

时间:2015-01-05 07:22:00

标签: python python-2.7

我有一个返回自己名字的方法。该方法如下所示:

import inspect
class example(object):
    def getvalue(self):
        return inspect.stack()[0][3]   #returns current method's name

现在我正在像这样的示例类中以动态方式创建一个方法。

import inspect
class example(object):
    def getvalue(self):
        return inspect.stack()[0][3]   #returns current method's name

if __name__=="__main__":
    e = example()
    e.method=e.getvalue
    print e.method()

这给出了输出getvalue。 现在我希望我的getvalue()方法返回动态方法我创建的名称,即方法。有没有办法在python中做到这一点?如果是这样,我必须在getvalue()方法中进行哪些更改,以便返回动态创建的方法名称。

import inspect
class example(object):
    def getvalue(self):
        return inspect.stack()[0][3]   #what to write here...

1 个答案:

答案 0 :(得分:4)

这是不可能的。

在Python中,同一个对象可以有多个“名称”,因此谈论对象的“名称”没有意义。

方法是对象,函数和方法的编译器存储在__name__字段中完成编译时找到的“名称”。如果您稍后移动对象并将其放在可使用其他名称访问的位置,则__name__字段将不会更改。