将python-AST编译到方法

2024-10-02 10:34:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在用python测试ast。我想通过在运行时转换AST来修改方法。在

我可以使用inspect.getsource()获得预编译方法的源代码,并且 我可以使用AST访问者根据需要修改AST。在

这可能很幼稚,但我希望能够编译AST并执行类似以下操作:

myClass.method.__func__.__code__ = compile(newAST, '<string>', 'exec')

但是compile只接受带有ast.模块作为根。 有没有一种方法可以编译ast.FunctionDef,或从已编译(或为空)模块代码中检索函数代码对象?在

如果你能提供任何关于这类事情的信息,我们将不胜感激。我看到的AST示例只处理简单的表达式。在


我意识到我只需要在名称空间中执行模块,然后就可以访问正常的结构了。 所以模式是:

^{pr2}$

但现在我有另一个问题: 如何将其插入到普通的python构建过程中,以便只进行一次修改,然后从.pyc文件加载?在


Tags: 模块方法代码源代码myclasscodeastmethod
1条回答
网友
1楼 · 发布于 2024-10-02 10:34:38

你不应该在自己的答案中提出一个新的问题,而应该为这个问题创建一个单独的问题。在

注意你的第一个和第二个问题也有点矛盾。首先你想在运行时做一些事情,然后你想把它们写到一个文件中,这样你就不必一遍又一遍地做了。请说明你的最终目标是让我们清楚地知道你想要什么。在

这听起来像是在修改文件的ast之后创建一个新的.py文件,正如Parse a .py file, read the AST, modify it, then write back the modified source code中所解释的那样

然后,您将通过编译新创建的py文件来获得pyc文件。在

相关问题 更多 >

    热门问题