使用静态分析和Jedi查找Python基类

2024-10-02 16:22:11 发布

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

<强>注:我不认为这是一个重复的问题,比如List all base classes in a hierarchy of given class?,因为我没有在运行时实例化类的能力。这里的重点是静态分析,而不是动态分析

我正在使用绝地工具对内部源代码进行静态分析。我可以使用它来帮助我识别给定类继承自的所有类吗

例如,下面是一个名为utils.py的脚本:

class UtilBase:
    pass


class SampleUtil(UtilBase):
    pass

下面是接收它的代码:

import jedi

script = jedi.Script('utils.py')
names = script.get_names()
sample = names[1]

# shows "utils"
print(sample.parent())

# shows "SampleUtil()"
print(sample.get_signatures()[0].to_string())

我想要的是一种从sample获取名称“UtilBase”的方法


Tags: samplepygetnames静态scriptutilspass