Python钩子列表?

2024-06-08 19:07:06 发布

您现在位置:Python中文网/ 问答频道 /正文

为了更好地理解一个程序,我正在尝试实现一个跟踪元类,当一个类从中继承时,它的所有方法调用都会被跟踪到一个文件。我不能简单地使用像Trace.py这样的模块,因为在我的执行环境中我没有访问控制台的权限。我最近了解了sys.settrace(),这是一个每当python执行一行时都会调用的钩子,虽然它几乎解决了我的问题,但我无法获得跟踪的相关行信息,因为我无法知道将执行哪个文件。我怀疑我需要一个钩子,它在类中的任何方法被调用之前被调用,传入方法名,然后在跟踪元类中实现该钩子。你知道吗

所有的python钩子都有引用吗?你知道吗

提前谢谢


Tags: 模块文件方法py程序信息权限环境
1条回答
网友
1楼 · 发布于 2024-06-08 19:07:06

我不确定我是否正确理解了您的问题,但您可以从框架的f_code成员获取有关文件/行的信息:

def trace(frame, event, arg_frame):
    print(frame.f_code.co_filename, frame.f_code.co_firstlineno)

sys.settrace(trace)

有关框架和代码对象的详细信息:https://docs.python.org/3/library/inspect.html

相关问题 更多 >