我想从实际的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
模块来抓取所有模型。现在我只需要翻译它
谢谢
答案 0 :(得分:2)
您可以使用以下方式获取源代码:
GetAsyncKeyState
仅当参数是模块,类,方法,函数,回溯,框架或代码对象时才有效。如果Python无法获取源代码,那么这将引发Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("user32.dll")> _
Public Shared Function GetAsyncKeyState(ByVal vKey As System.Windows.Forms.Keys) As Short
End Function
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
If GetAsyncKeyState(Keys.LButton) <> 0 Then
Debug.Print("Left button click")
ElseIf GetAsyncKeyState(Keys.RButton) <> 0 Then
Debug.Print("Right button click")
End If
End Sub
End Class
。
答案 1 :(得分:0)
如果要从AST重建源文本,可以构建一个漂亮的打印机。