2011-03-15 23 views
18

Cuando estoy usando un ibrary tercera parte l como boto, PyCharm parece ser capaz de auto-completar bastante bien¿Cómo hacer que PyCharm complete automáticamente el código en los métodos?

enter image description here

Sin embargo, tan pronto como definir una función de la mía, autocompletar se descompone dentro de esa función. Entiendo por qué, dado que no puedo dar a la función ningún tipo de información sobre sus argumentos, por lo que no puedo adivinar cómo autocompletar. ¿Hay alguna forma de solucionar este problema?

Editar

He intentado utilizar la cadena de documentación (para Python 2), pero todavía no hay auto-completar

def delete_oldest_backups(conn, backups_to_keep, backup_description): 
    """ 
    delete_oldest_backups(EC2Connection, int, string) 
    """ 

(también trató boto.ec2.connection.EC2Connection en lugar de sólo EC2Connection)

+0

posible duplicado de [Finalización del código de Pydev para todo] (http://stackoverflow.com/questions/6218778/pydev-code-completion-for-everything) – Jonathan

Respuesta

5

Puede especifique la información de tipo sobre los parámetros de la función usando el parámetro Python 3 y las anotaciones de valor de retorno. Si está usando Python 2, también puede especificar información en la cadena de documentos de la función. PyCharm entiende el formato utilizado por las cadenas de documentación de los módulos binarios en la biblioteca estándar, por ejemplo:

""" 
foo(int, string) -> list 

Returns the list of something 
""" 
+1

Intenté esto (vea la pregunta editada), pero todavía no hay auto -completar. – ripper234

+0

naither funciona para mí: def get_instance_by_name (conexión, nombre): "" " get_instance_by_name (conexión, nombre) -> boto.ec2.instance devoluciones objeto de instancia con el nombre especificado """ y no tengo autocmpliton disponible, por ejemplo objeto –

1

Para que PyCharm reconocer una instancia de un objeto y recuperar todos sus métodos, tenemos que utilizar las siguientes declaraciones. Pero creo que ambos son una forma terrible de perder programación y tiempo de ejecución.

assert isinstance(instanceX, ClassOfInstanceX) 
instanceX.{#list of method/properties appears} 

Como alternativa, también se puede utilizar el nombre de la clase, se llamará el método o una propiedad cada vez que desea invocar y pasarlo en la instancia al parámetro auto. Pero esto es demasiado detallado, para mi gusto, especialmente para la clase anidada

ClassOfInstanceX.{#list of method/properties appears} 
    # then you will have... 
ClassOfInstance.method(instanceX, args...) 
1

Usted puede instalar la biblioteca a través de PyCharm "gestor de paquetes".

Vaya a Configuración -> Proyecto Intérprete -> Python Intérpretes

Package list

Y en la lista de paquetes, haga clic en instalar y buscar la biblioteca que desea instalar

Install package

Una vez instalado, la autocompleta estará disponible en el editor.

Autocomple inside function

Hope esto es lo que busca.

Cuestiones relacionadas