Я хотел бы улучшить автозаполнение в консоли Python, которая является частью проекта, над которым я работаю.Хотя jedi отлично подходит для этого в целом, есть один особый случай, когда он не может найти никаких предложений о завершении: Свойства классов, определенных как методы с декоратором @property
.Следующий пример должен объяснить мою проблему:
import jedi
class B:
def __init(self):
pass
def see_me(self):
pass
class A:
def __init__(self):
pass
@property
def b(self):
return B()
def get_b(self):
return B()
a = A()
script = jedi.Interpreter('a.b.', [locals()])
comps = script.completions()
print('Interpreter completion (property): ', comps)
script = jedi.Interpreter('a.get_b().', [locals()])
comps = script.completions()
print('Interpreter completion (method): ', comps)
выполнение скрипта возвращает:
Interpreter completion (property): []
Interpreter completion (method): [<Completion: see_me>, ...]
Когда вызывается метод с декоратором @property
, джедай не находит никакого завершения.«Нормальный» метод работает просто отлично.Использую ли я здесь джедая неправильно или это только один из случаев, который слишком трудно решить для джедая?
Заранее спасибо за вашу помощь!
PS: Я также пытался поставитьвесь код до a = A()
в строку и использовал Script
вместо Interpreter
, чтобы получить завершение.Интересно, что тогда удалось найти правильное завершение и для метода @property
.