我如何在运行之前搜索python脚本以使用类方法?

问题描述 投票:0回答:1

我希望能够在运行脚本本身之前扫描python脚本中是否使用类方法。例如,给定以下脚本,获取对“ A”类的“ foo”方法的所有使用以及传递给该方法的参数

class A():
    def foo(self, val):
        return val + 1

class B():
    def foo(self, val):
        return val - 1

a = A()
b = B()

a_val = a.foo(1)
b_val = b.foo(1)

这是一个非常简单的示例,但是这里的目标是使用除正则表达式以外的其他内容来搜索foo()模式,以便不返回诸如b.foo(1)之类的项目。我看过astsymtable模块,但是它们似乎没有我想要的功能。我意识到由于python是一种解释型语言,这可能是一个困难/不可能的问题,但似乎其他人以前曾经遇到过此问题]

python abstract-syntax-tree introspection
1个回答
0
投票

这无法通过静态代码分析完成,因为方法的所有者是在运行时确定的。例如,我可以添加到您的示例中:

b = a
b.foo(0)

这里b.foo(0)实际上是对类Afoo方法的调用。而且静态代码分析不知道这一点,因为这取决于运行时。

这意味着您要的内容减少了停顿问题。不能保证正确答案就可以满足您的要求。

© www.soinside.com 2019 - 2024. All rights reserved.