使用 python ast 中 ._field 属性中存储的值

发布于 2024-11-07 12:20:59 字数 379 浏览 0 评论 0原文

这个问题是我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧伤慢歌 2024-11-14 12:20:59

要迭代任意节点的子节点,请使用 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, use ast.iter_fields().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文