在 Python 中记录用于调试的函数调用的最简单方法是什么?我通常对给定类的特定函数或所有函数感兴趣。有时甚至是调用特定对象属性的所有函数。查看调用参数也会很有用。
我可以想象为所有这些编写装饰器,但是我仍然必须在不同的地方修改源代码。编写一个修改所有方法的类装饰器并不是那么简单。
有没有不需要修改源代码的解决方案?理想情况下,不会让 Python 太慢的东西。
你应该能够实现一些你想要使用的sys.setprofile()
东西sys.settrace()
。它们都允许您定义在发生特定“事件”(如函数调用)时要调用的函数,并将附加信息传递给这些信息,这些信息可用于确定被调用的函数/方法并检查其参数。
如果您环顾四周,可能有示例使用代码可以作为一个很好的起点。
除了装饰器,对于 Python >= 3.0,您可以为类使用新的 __getattribute__ 方法,每次调用对象的任何方法时都会调用该方法。你可以通过 Lutz “Learning Python” 第 31、37 章来了解它。