Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 能说服绝地武士自动完成名单吗?_Python_Jedi_Python Jedi - Fatal编程技术网

Python 能说服绝地武士自动完成名单吗?

Python 能说服绝地武士自动完成名单吗?,python,jedi,python-jedi,Python,Jedi,Python Jedi,在python程序的命令行中将对象暴露到树中,我得到了大量的实用程序。例如: myprog.py obj1.obj2.method 让我执行obj1.obj2.method(),然后 如果有的话,这应该是可行的: >>> script = jedi.Interpreter(prefix, [{"x": x}]) >>> script.completions() 然而,此时它返回一个空列表。我认为应该在绝地问题追踪器中增加一个问题,因为这是绝对可以做到的

在python程序的命令行中将对象暴露到树中,我得到了大量的实用程序。例如:

myprog.py  obj1.obj2.method
让我执行obj1.obj2.method(),然后


如果有的话,这应该是可行的:

>>> script = jedi.Interpreter(prefix, [{"x": x}])
>>> script.completions()
然而,此时它返回一个空列表。我认为应该在绝地问题追踪器中增加一个问题,因为这是绝对可以做到的

如果我没记错绝地密码,绝地在某些情况下(如类查找)会尝试不调用
getattr
,但这很容易改变,因为:

  • 无论如何都不一致,绝地会对不复杂的对象调用
    getattr
    ,比如
    x.y
  • 标准库自动完成还调用
    getattr
  • 如果你想知道,只需在绝地问题追踪器上添加一个问题

    class X:
        pass
    
    x = X()
    x2 = X()
    x2.y = 456
    x.z = [x2]
    
    # Want to get x.z[0].y in the results
    prefix = "x.z[0]."
    
    import jedi
    # Tell jedi about list elements?
    script = jedi.Interpreter(prefix, [{"x.z[0].z": x.z[0].z}])
    
    for c in script.completions():
        print c
    sys.exit()
    
    >>> script = jedi.Interpreter(prefix, [{"x": x}])
    >>> script.completions()