Ingannare il completamento del codice con pydev come con PDT?
-
19-09-2019 - |
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.
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)