low*_*key 3 python abstract-syntax-tree
我正在使用python的ast模块来显示类继承树.
我为a定义了一个visit_ClassDef(self, node)函数ast.NodeVisitor,并进行迭代node.bases.
但是,我一直无法将基类的名称作为字符串.到目前为止,我已经试过base.value和base.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']
Run Code Online (Sandbox Code Playgroud)
这是test.py:
class Bar(Foo,Baz):
pass
Run Code Online (Sandbox Code Playgroud)
关于这个的文档非常难以理解,但你可以看到这bases是一个expr对象列表.现在它真的可以是任何表达.你可以在那里进行函数调用:
class Bar(FooFactory(),BazFactory()): pass
Run Code Online (Sandbox Code Playgroud)
这是完全有效的python.但是,典型的情况是你只有标识符(类名),它们只不过是Name表达式.您可以从id属性中获取标识符的"名称"作为字符串.
| 归档时间: |
|
| 查看次数: |
932 次 |
| 最近记录: |