Завершение трюкового кода с PyDev, как с PDT? - PullRequest
3 голосов
/ 07 января 2010

Есть ли способ помочь завершению кода PyDev, указав тип переменной?

С помощью PDT вы можете использовать PHPDoc-подобный синтаксис для таких целей:

/* @var $my_var MyClass */
$my_var = myFunction();
// PDT is able to figure out that $my_var is a MyClass object.

Но до сих пор я не могу понять, как сделать то же самое в python.

Ответы [ 3 ]

3 голосов
/ 14 января 2010

На самом деле, вы можете, если вы делаете assert isinstance ()

Например:

a = function()
assert isinstance(a, MyClass)
a. <- would get the proper completions

Обратите внимание, что Pydev действительно анализирует возвращение функций, поэтому, возможно, он знает,это в ряде случаев.

Кроме того, это не должно иметь штрафов за время выполнения, если вы используете python -O (который удалит утверждения)

3 голосов
/ 16 сентября 2011

Уловка подтверждения не работает для меня с PyDev 2.2.2; это все еще должно?

Однако я попробовал еще один прием, и эта работа заключается в следующем:

class Foo(object):
    def __init__(self, bar):
       self.bar = bar
       # Tricking PyDev
       if (not self.bar):
          self.bar = Bar()
          raise Exception("Bar should not be null")

Во всех случаях это выглядит довольно странно, и я бы хотел более чистый способ делать вещи (документация, аннотации и т. Д.)

1 голос
/ 07 января 2010

Нет (см. документы ). Похоже, что PyDev выполняет завершение импортированных вещей и языковых ключевых слов.

Похоже, это не так уж и много. Кажется, что рассматриваемая переменная будет неизвестна pydev, только если она будет передана в качестве аргумента функции без значения по умолчанию. И, если у вас есть функция, работающая с вашим собственным классом, кажется, что она должна быть членом класса так что автозаполнение уже будет работать).

...