Los IDE, como VS Code y PyCharm, ofrecen finalización de código integrada para el lenguaje Python.
La biblioteca google-ads-python genera clases de mensajes de protobuf de forma dinámica en el tiempo de ejecución con métodos getter en la clase GoogleAdsClient, lo que puede inhibir las funciones de finalización de código del IDE que se basan en el análisis estático del código fuente.
Para mejorar la compatibilidad con las herramientas de autocompletado de código que dependen del análisis estático, importa las clases de mensajes de Protobuf directamente, en lugar de usar métodos getter.
Usa clases de mensajes de Protobuf importadas de forma dinámica. Por lo general, este enfoque no es compatible con las herramientas de autocompletado de código.
from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage() # The Campaign class is imported dynamically, preventing the IDE from # reading the class definition. campaign = client.get_type("Campaign")Usar clases de mensajes de Protobuf importadas directamente Este enfoque permite que funcionen las herramientas de autocompletado de código.
from google.ads.googleads.v22.resources import Campaign # The Campaign class is imported directly, enabling the IDE to read the # class definition and make code completion suggestions. campaign = Campaign()
Si bien la importación directa de clases generadas ayuda a completar el código, también presenta algunas desventajas:
- No siempre es obvio en qué módulo se encuentra una clase determinada, por lo que encontrar la ruta de importación correcta puede ser difícil.
- La estructura de directorios de las clases generadas puede cambiar con las nuevas versiones de la biblioteca cliente. Si importas clases directamente, es posible que tu código deje de funcionar cuando realices la actualización, mientras que el código que usa métodos getter no se verá afectado por este tipo de cambios.
- El método
get_serviceinicializa los servicios antes de devolverlos. Si importas servicios directamente, deberás inicializarlos de forma manual antes de realizar solicitudes.