我需要获取调用另一个函数的对象方法。我不想要它的名字,而是实际的对象。
到目前为止,我明白了。
import inspect
def info():
stack_call = inspect.stack()
cls_method = stack_call[1][3]
cls_obj = stack_call[1].frame.f_locals["self"]
cls_members = inspect.getmembers(cls_obj)
my_obj = None
for el in cls_members:
if el[0] == cls_method:
my_obj = el[1]
break
print(my_obj)
class Bob:
def __int__(self):
pass
def jim(self):
info()
test = Bob()
test.jim()
它可以完成我想做的事情,但我不喜欢必须遍历列表以找到正确的方法及其名称。
我尝试了很多事情,但是看不到如何使其变得更好。
会有谁有更好的版本?
答案 0 :(得分:0)
有些不同:
def info():
stack_call = inspect.stack()
cls_obj = stack_call[1].frame.f_locals[list(stack_call[1].frame.f_locals.keys())[0]]
cls_method = getattr(cls_obj, stack_call[1][3])
print(cls_method)