Les IDE tels que VS Code et PyCharm offrent une complétion de code intégrée pour le langage Python.
La bibliothèque google-ads-python génère des classes de messages protobuf de manière dynamique au moment de l'exécution à l'aide de méthodes getter sur la classe GoogleAdsClient, ce qui peut inhiber les fonctionnalités de saisie semi-automatique de code de l'IDE qui s'appuient sur l'analyse statique du code source.
Vous pouvez améliorer la compatibilité avec les outils de complétion de code qui s'appuient sur l'analyse statique en important directement les classes de messages protobuf, au lieu d'utiliser des méthodes getter.
Utilisation de classes de messages Protobuf importées de manière dynamique. Cette approche n'est généralement pas compatible avec les outils de saisie semi-automatique de code.
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")Utilisation de classes de messages Protobuf importées directement. Cette approche permet aux outils de saisie semi-automatique de code de fonctionner.
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()
Bien que l'importation directe des classes générées facilite la complétion du code, elle présente également certains inconvénients :
- Il n'est pas toujours évident de déterminer dans quel module se trouve une classe donnée. Il peut donc être difficile de trouver le bon chemin d'importation.
- La structure de répertoire des classes générées peut changer avec les nouvelles versions de la bibliothèque cliente. Si vous importez des classes directement, votre code risque de ne plus fonctionner lorsque vous effectuerez une mise à niveau. En revanche, le code qui utilise des méthodes getter ne sera pas affecté par ces types de modifications.
- La méthode
get_serviceinitialise les services avant de les renvoyer. Si vous importez directement des services, vous devrez les initialiser manuellement avant d'effectuer des requêtes.