Domanda

C'è un modo per aiutare il completamento del codice PyDev dicendo che il tipo di una variabile?

Con PDT, è possibile utilizzare la sintassi PHPDoc simile a tale scopo:

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

Ma fino ad ora, non riesco a capire come fare la stessa cosa in Python.

È stato utile?

Soluzione

No (si veda il docs ). Sembra PyDev fa completamento importati roba e linguistiche parole chiave.

Non sembra come questo sarebbe venuto fuori molto però. La variabile in questione sembra che solo sarebbe sconosciuto a pydev se fosse passato come argomento di funzione alcun valore predefinito value.And, se si dispone di una funzione che opera su una propria classe, sembra che questo dovrebbe essere un membro della classe ( così autocomplete sarebbe già lavorare).

Altri suggerimenti

Il trucco assert non sembra funzionare per me con pydev 2.2.2; è ancora dovrebbe?

Tuttavia un altro trucco che ho provato e che il lavoro è il seguente:

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")

In tutti i casi, sembra piuttosto hacky, e mi piacerebbe un modo più pulito di fare le cose (documentazione, l'annotazione, a prescindere)

In realtà, se si può fare un isinstance assert ()

per esempio:.

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

Si noti che Pydev fa analizzare il ritorno delle funzioni, quindi, è possibile che si sa che su un certo numero di casi.

Inoltre, che non dovrebbe avere sanzioni di runtime se si utilizza python -O (che rimuoverà la asserisce)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top