我试图跟踪给定函数的函数调用层次结构(traceback),但这种方式允许我获取对一个类的引用,该类将函数作为属性。获取类实例的引用也很好。你知道吗
如果我有一个类A
的对象,它有函数do_work
,函数do_work
调用一个函数f
,我想知道在f
内部A
的哪个实例调用了它。你知道吗
目前,使用inspect
模块可以获得正确的函数调用顺序,但这不包括对将函数作为属性保存的类或对象实例的任何引用:
import inspect
class A:
def __init__(self, name):
self.name = name
def do_work(self):
return f()
def f():
return inspect.stack()
a = A("test")
print(a.do_work())
[
FrameInfo(frame=<... line 13, code f>, code_context=['return inspect.stack()'])
FrameInfo(frame=<..., line 9, code do_work>, code_context=['return f()']),
FrameInfo(frame=<..., line 17, code <module>>, code_context=['print(a.do_work())'])
]
我想从f
获取对a
对象实例或至少对A
类的引用。你知道吗
给定您感兴趣的帧的帧信息:
您可以通过以下方式访问
a
对象(在该帧中称为self
):对于其类名using:
相关问题 更多 >
编程相关推荐