如何获取动态创建的方法的名称
how to get dynamically created method's name
我有一个方法 return 它有自己的名字。该方法如下所示:
import inspect
class example(object):
def getvalue(self):
return inspect.stack()[0][3] #returns current method's name
现在我在那个例子中动态地创建一个方法 class 像这样。
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() 方法到 return 我创建的动态方法的名称,即方法。有没有办法在 python 中做到这一点?如果是这样,我必须在我的 getvalue() 方法中做哪些更改,以便它 return 动态创建方法的名称。
import inspect
class example(object):
def getvalue(self):
return inspect.stack()[0][3] #what to write here...
这是不可能的。
在 Python 中,同一个对象可以有多个 "names",因此谈论对象的 "the" 名称没有意义。
方法是对象,函数和方法的编译器存储在 __name__
字段中完成编译时找到的 "name"。如果您稍后移动该对象并将其放置在使用其他名称可访问的地方,它的 __name__
字段将不会改变。
我有一个方法 return 它有自己的名字。该方法如下所示:
import inspect
class example(object):
def getvalue(self):
return inspect.stack()[0][3] #returns current method's name
现在我在那个例子中动态地创建一个方法 class 像这样。
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() 方法到 return 我创建的动态方法的名称,即方法。有没有办法在 python 中做到这一点?如果是这样,我必须在我的 getvalue() 方法中做哪些更改,以便它 return 动态创建方法的名称。
import inspect
class example(object):
def getvalue(self):
return inspect.stack()[0][3] #what to write here...
这是不可能的。
在 Python 中,同一个对象可以有多个 "names",因此谈论对象的 "the" 名称没有意义。
方法是对象,函数和方法的编译器存储在 __name__
字段中完成编译时找到的 "name"。如果您稍后移动该对象并将其放置在使用其他名称可访问的地方,它的 __name__
字段将不会改变。