使用 python ast 中 ._field 属性中存储的值
这个问题是我的 python ast 工作的结果。
我在 ast 中有一个节点,我想获取它的子节点。
._field 属性给出节点的所有子节点的名称。然而,根据语法节点的不同,它对于不同的节点是不同的。
例如,如果节点的类型为BinOp..,则node._field将产生('left','op','right')
因此,要访问节点的子节点,我必须使用node.left,node.op和node。是的,
但我想对任何通用节点执行此操作。
给定任何节点,如果我使用node._field,它会给我一个元组。我如何使用这个元组来获取孩子。该节点可以是任意通用节点。所以我事先不知道元组会是什么样子。
代码形式的例子会非常好! 谢谢!
This question is a result of my python ast work.
I have a node in the ast and I want to obtain its children.
The ._field attribute gives the names of all the children of a node. However it is different for different node depending upon the syntax node.
for example if node is of type BinOp..then node._field will yield ('left','op', 'right')
Hence to access the children of node I have to use node.left, node.op and node.right
But I want to do it for any general node.
given any node if I use node._field it will give me a tupple. How do I use this tupple for obtaining the children. The node can be any general node. So I do not know what the tuple would be like beforehand.
examples in form of codes will be really nice!
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要迭代任意节点的子节点,请使用
ast.iter_child_nodes()
。要迭代字段,请使用ast.iter_fields()
。To iterate over the children of an arbitrary node, use
ast.iter_child_nodes()
. To iterate over the fields instead, useast.iter_fields()
.