python - 从对象重建源

标签 python parsing python-3.x abstract-syntax-tree

我想从实际的 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 模块来获取所有模型。现在我只需要取消翻译

谢谢

最佳答案

您可以使用以下方式获取源代码:

import inspect
print(inspect.getsource(biz unit))

仅当参数是模块、类、方法、函数、回溯、框架或代码对象时才有效。如果 Python 无法获取源代码,则会引发 IOError

关于python - 从对象重建源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36143380/

相关文章:

python - 为什么 ElementTree.iterparse() 引发 ParseError?

c++ - spirit x3 如何将 vector 添加到 AST

java - 解析 XML 并获取标签 value 属性内的数据

python - 解包时是否可以指定默认值?

python-3.x - 在 Python 中使用生成器进行广度优先树遍历

Python 使用 count() 的素数迭代器

Java 和 Python

python - 使用 python 脚本运行 Catia 宏

java - 在 Java/Android 中解析此 YQL JSON 时出现问题

python - Python 3 中 .keys() 的最 Pythonic 替代品