python - para - liclipse git
Completar el código Pydev para todo (4)
En muchos casos (como los parámetros de función), Pydev no conoce estáticamente el tipo de variable. Por lo tanto, la finalización del código (después de, o cuando se usa ctrl+space
) no funciona.
En la mayoría de los casos, sabrá qué tipo estará en el tiempo de ejecución cuando esté diseñando el software. ¿Hay alguna manera de sugerir que Pydev codifique completarlo correctamente?
Supongo que esto puede requerir una característica específica de Pydev, o tal vez incluso una nueva PIP de Python.
En realidad, esto parece ser un problema genérico con todos los lenguajes dinámicos ...
ACTUALIZAR:
Quizás haya un ejemplo para aclarar:
def some_func(a_list, an_object):
a_list.app # Here I would not get code completion for append
Un ejemplo de algo que podría funcionar, si Pydev (o un PIP) lo admitiría:
from someobj import SomeObject
def some_func(a_list, an_object):
# typecast: a_list=list
# typecast: an_object=SomeObject
a_list.app # Now code completion would show append
No estoy respaldando este método específico, es solo un ejemplo de un sistema que podría funcionar. Nuevamente, por supuesto, esto no debería ser obligatorio, pero a veces la falta de la posibilidad de insinuar el tipo es molesta.
A partir de PyDev 2.8.0 puede usar los comentarios de Sphinx o Epydoc para completar el código: http://pydev.org/manual_adv_type_hints.html
Lo que suelo hacer para evitar esto.
def func(my_list_param):
my_list_param = []
my_list_param.appe # at this stage I would get code completion.
Solo recuerde eliminar la inicialización de la variable al probar o confirmar. Ah y por cierto, la respuesta marcada como respuesta no parece funcionar para mí.
Si usa PyCharm , puede elegir el estilo de cadena de documentación epydoc o sphinx y especificar los tipos de parámetros y valores de retorno de función de acuerdo con ese estilo ( más información )
[Editar]
Desde PyDev 2.8.0, puede usar cadenas de documentos y comentarios para descubrir el tipo de objetos.
Consulte: http://pydev.org/manual_adv_type_hints.html para obtener detalles sobre los formatos compatibles.
[Antes de PyDev 2.8.0]
Anteriormente, solo admitía las llamadas de aserción de instancias (y esto todavía funciona):
assert isinstance(a_list, list)
PyDev podrá reconocerlo y proporcionarlo correctamente para completar el código (tenga en cuenta que puede ejecutar Python sin las afirmaciones más adelante si encuentra que está haciendo su código más lento: ¿Qué hace la optimización de Python (-O o PYTHONOPTIMIZE)? )