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