Python 我可以用绝地武士在脚本中的某个位置获取对象的类型吗?

Python 我可以用绝地武士在脚本中的某个位置获取对象的类型吗?,python,Python,我想使用静态分析来确定python脚本中某个位置的对象类型(例如变量名或实例等)的模块路径。例如,如果在我定义的某个地方: a = np.array([1, 2, 3]) 在后面的脚本中,我使用变量a,我知道位置,我希望有一个返回numpy.array的函数 另一个例子是: from ase import Atoms a = Atoms([]) 之后,如果函数位于变量上,它将返回ase.atoms.atoms。一般来说,将它用作pydoc的参数是正确的,因为pydoc用于光标处的对象 我调查

我想使用静态分析来确定python脚本中某个位置的对象类型(例如变量名或实例等)的模块路径。例如,如果在我定义的某个地方:

a = np.array([1, 2, 3])
在后面的脚本中,我使用变量a,我知道位置,我希望有一个返回numpy.array的函数

另一个例子是:

from ase import Atoms
a = Atoms([])
之后,如果函数位于变量上,它将返回ase.atoms.atoms。一般来说,将它用作pydoc的参数是正确的,因为pydoc用于光标处的对象

我调查过绝地武士,但不清楚它能做我想做的事。可能吗?或者有没有其他方法来获取这些信息

以下是我迄今为止所了解的一个例子:

#+BEGIN_SRC python
import jedi

source = '''from ase import Atom, Atoms

a = Atoms([])'''

s = jedi.Script(source, 3)
gd = s.goto_definitions()

print('name: ',gd[0].name)
print('mname: ', gd[0].module_name)
print('mpath: ', gd[0].module_path)
print('line: ', gd[0].line)
print('fname: ', gd[0].full_name)
print('parent: ', gd[0].parent().module_name)
#+END_SRC

#+RESULTS:
: name:  Atoms
: mname:  atoms
: mpath:  /Users/jkitchin/Dropbox/python/ase/ase/atoms.py
: line:  24
: fname:  atoms.Atoms
: parent:  atoms

我需要的是“ase.atoms.atoms”。我要做的是在编辑器中的Python脚本中,运行一个命令,返回光标处对象的全名,然后在其上运行pydoc以查看文档。上面的代码非常接近,但“pydoc atoms.atoms”不正确,因为它在开始时缺少ase。

您是否在寻找
类型(a)。\uuuuuuuuqalname\uuuu
?我不这么认为。这看起来像是你在脚本中要做的,但这不是我想要做的。我不想运行脚本本身,只是分析它。我编辑了我的问题来澄清。你是在寻找
类型(a)。\uuuuqalname\uuuu
?我不这么认为。这看起来像是你在脚本中要做的,但这不是我想要做的。我不想运行脚本本身,只是分析它。我编辑了我的问题来澄清。