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 complétion de code des IDE qui reposent sur l'analyse statique du
code source.
Vous pouvez améliorer la compatibilité avec les outils de complétion de code qui reposent sur l'analyse statique en important directement les classes de messages protobuf, au lieu d'utiliser des méthodes getter.
Utiliser des classes de messages protobuf importées de manière dynamique. Cette approche n'est généralement pas compatible avec les outils de complétion 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")Utiliser des classes de messages protobuf importées directement. Cette approche permet aux outils de complétion de code de fonctionner.
from google.ads.googleads.v25.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 de classes générées facilite la complétion de code, elle présente également certains inconvénients :
- Il n'est pas toujours évident de savoir dans quel module se trouve une classe donnée. Il peut donc être difficile de trouver le chemin d'importation approprié.
- 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 peut être interrompu lors de la mise à niveau, tandis que 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 des services directement, vous devrez les initialiser manuellement avant d'effectuer des requêtes.