这行代码在PyPy中失败:
expr.__repr__ = lambda self: ast.dump(self, annotate_fields=False)
TypeError: can't set attributes on type object 'expr'
即使它在普通的python中也很好用,即它为我的AST节点提供了合理的
__repr__
。有什么原因为什么它在PyPy中不起作用?是否有任何解决方法?我尝试猴子修补repr
函数本身的尝试失败了。 最佳答案
不幸的是,没有简单的方法。在PyPy上,AST类的作用类似于list
或int
的内置类型,因为您不能更改它们。如果要定义自定义代表,则最好的办法就是定义自己的函数。您可能会发现ast.NodeVisitor
类很容易实现此类功能。
关于python - PyPy:不能补习ast类吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16310661/