我想从实际的python对象中抓取代码。这是AST和parse相反的想法,我在内存中有一个对象,我想重新创建源代码。我不想深入讨论过多的字节代码,我只想要一个对象代码的表示形式:
In [24]: from django.apps import apps
In [25]: x= apps.get_app('accounts')
In [26]: x
Out[26]: <module 'mysite.accounts.models' from '/home/cchilders/work_projects/mysite/mysite/accounts/models.py'>
In [27]: x.
x.BusinessUnit x.models
In [35]: bizunit = x.BusinessUnit
In [36]: type(bizunit)
Out[36]: django.db.models.base.ModelBase
import something
bizunit_code = something.something(bizunit)我想要所有模型的源代码,但使用ast似乎太麻烦了,特别是因为django提供了apps模块来获取所有模型。现在我只需要取消它的翻译
谢谢
发布于 2016-03-22 07:20:13
您可以使用以下命令获取源代码:
import inspect
print(inspect.getsource(biz unit))只有当参数是模块、类、方法、函数、回溯、帧或代码对象时,这才有效。如果Python无法获得源代码,那么这将引发一个IOError。
发布于 2016-03-22 10:33:39
如果你想从一个AST重建源文本,你可以构建一个漂亮的打印机。
关于如何做到这一点,请参阅我的SO答案:https://stackoverflow.com/a/5834775/120163
https://stackoverflow.com/questions/36143380
复制相似问题