Skip to main content
 首页 » 编程设计

python之显示调用特定方法的行

2025年05月04日13txw1958

假设您有来自特定模块的特定方法(函数) (特定类别的,可选的)。是否可以通过库源代码的自省(introspection)打印调用(使用)该方法的所有行? 它可以在内部调用(使用 self.method_name())或外部调用 (object1.method_name() in source file 1, object2.method_name() in source 文件 2,...和源文件 N 中的 objectN.method_name())。

可以在 re 模块及其方法 re.findall 中显示示例。

我尝试用 grep 打印这些行,但这是一个问题 具有相同名称的方法(例如,我尝试使用名为 connect() 的方法, 但是 24 个类有一个名为 connect 的方法......我想过滤这个 特定类(和/或模块)。

请您参考如下方法:

我经常 grep 查找函数的使用情况。幸运的是,我从来没有对如此大量重复的东西感兴趣。

如果 Class.method 的错误命中太常见而无法手动过滤,我可能会这样做,而不是编写一次性代码。首先 grep for class Class 以找到具有类定义的 module 并记下行的范围。然后为 self.method grep 该模块并删除或忽略该范围之外的命中。然后为 import module 和 from module 搜索所有感兴趣的模块,以查找可能使用该类和方法的模块。然后根据特定的导入形式 grep 模块组。

正如其他人所指出的,即使这样也会错过使用别名作为方法名称的调用。但是只有您知道这是否是您的场景的问题。据我所知,我的所作所为并非如此。

一种完全不同的方法(不依赖于名称)是在使用动态内省(introspection)确定调用者之后,使用记录其调用的代码来检测函数。 (我相信有关于此的 SO 问答。)