IDEs wie VS Code und PyCharm bieten eine integrierte Codevervollständigung für die Python-Sprache.
Die google-ads-python Bibliothek generiert Protobuf-Nachrichtenklassen dynamisch
zur Laufzeit mithilfe von Getter-Methoden für die Klasse GoogleAdsClient,
was IDE-Codevervollständigungsfunktionen beeinträchtigen kann, die auf der statischen Analyse von
Quellcode basieren.
Sie können die Kompatibilität mit Codevervollständigungstools verbessern, die auf der statischen Analyse basieren, indem Sie Protobuf-Nachrichtenklassen direkt importieren, anstatt Getter-Methoden zu verwenden.
Dynamisch importierte Protobuf-Nachrichtenklassen verwenden Dieser Ansatz ist in der Regel nicht mit Codevervollständigungstools kompatibel.
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")Direkt importierte Protobuf-Nachrichtenklassen verwenden Dieser Ansatz ermöglicht die Verwendung von Codevervollständigungstools.
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()
Das direkte Importieren generierter Klassen hilft zwar bei der Codevervollständigung, hat aber auch einige Nachteile:
- Es ist nicht immer offensichtlich, in welchem Modul sich eine bestimmte Klasse befindet. Daher kann es schwierig sein, den richtigen Importpfad zu finden.
- Die Verzeichnisstruktur der generierten Klassen kann sich mit neuen Versionen der Clientbibliothek ändern. Wenn Sie Klassen direkt importieren, kann Ihr Code bei einem Upgrade fehlerhaft sein. Code, der Getter-Methoden verwendet, ist von diesen Änderungen nicht betroffen.
- Die Methode
get_serviceinitialisiert Dienste, bevor sie zurückgegeben werden. Wenn Sie Dienste direkt importieren, müssen Sie sie manuell initialisieren, bevor Sie Anfragen stellen.