gpt4 book ai didi

python - 如何从 AST 获取继承树?

转载 作者:太空宇宙 更新时间:2023-11-03 13:01:33 25 4
gpt4 key购买 nike

我正在使用 python 的 ast 模块来显示类继承树。

我为 ast.NodeVisitor 定义了一个 visit_ClassDef(self, node) 函数,并遍历 node.bases

但是,我无法将基类的名称作为字符串获取。到目前为止,我已经尝试了 base.valuebase.name,但无济于事。

最佳答案

可能正在寻找 id 属性:

>>> import ast
>>> class Visit(ast.NodeVisitor):
... def visit_ClassDef(self, node):
... print [n.id for n in node.bases]
...
>>> text = open('test.py').read()
>>> tree = ast.parse(text)
>>> Visit().visit(tree)
['Foo', 'Baz']

这是test.py:

class Bar(Foo,Baz):
pass

这方面的文档很难理解,但您可以看到 basesexpr 对象的列表。现在它真的可以是任何表达式。你可以在那里进行函数调用:

class Bar(FooFactory(),BazFactory()): pass

那是完全有效的 python。但是,典型 情况是您只有标识符(类名),它们只不过是Name 表达式。您可以从 id 属性中获取标识符的“名称”作为字符串。

关于python - 如何从 AST 获取继承树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19174688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com