在Python ast中使用存储在._field属性中的值
这个问题是我在处理 Python 的抽象语法树(AST)时遇到的。
我有一个节点(node),想要获取它的子节点。
节点的 ._field 属性会告诉我这个节点所有子节点的名字。不过,不同类型的节点,这个属性的内容是不同的。
比如,如果这个节点是一个二元操作(BinOp),那么 node._field 会返回一个元组 ('left', 'op', 'right')。
因此,要访问这个节点的子节点,我需要使用 node.left、node.op 和 node.right。
但我想要对任何类型的节点都能这样做。
给定一个节点,如果我使用 node._field,它会给我一个元组。那么我该如何利用这个元组来获取子节点呢?因为这个节点可以是任何类型的,所以我事先并不知道这个元组的具体内容。
如果能提供一些代码示例,那就太好了!谢谢!
1 个回答
2
要遍历一个节点的所有子节点,可以使用 ast.iter_child_nodes()
这个方法。如果你想遍历这个节点的字段,可以使用 ast.iter_fields()
这个方法。