Środowiska IDE, takie jak VS Code i PyCharm, oferują wbudowane uzupełnianie kodu w języku Python.
Biblioteka google-ads-python dynamicznie generuje klasy komunikatów protobuf w czasie działania programu za pomocą metod pobierających w klasie GoogleAdsClient, co może utrudniać działanie funkcji uzupełniania kodu w IDE, które opierają się na statycznej analizie kodu źródłowego.
Aby zwiększyć zgodność z narzędziami do uzupełniania kodu, które korzystają z analizy statycznej, możesz importować klasy wiadomości protobuf bezpośrednio, zamiast używać metod pobierających.
używanie klas wiadomości protobuf importowanych dynamicznie; To podejście jest zwykle niezgodne z narzędziami do uzupełniania kodu.
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")bezpośrednio importowanych klas wiadomości protobuf; Takie podejście umożliwia działanie narzędzi do uzupełniania kodu.
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()
Bezpośrednie importowanie wygenerowanych klas ułatwia uzupełnianie kodu, ale ma też pewne wady:
- Nie zawsze jest oczywiste, w którym module znajduje się dana klasa, więc znalezienie prawidłowej ścieżki importu może być trudne.
- Struktura katalogów wygenerowanych klas może się zmieniać w nowych wersjach biblioteki klienta. Jeśli importujesz klasy bezpośrednio, kod może przestać działać po uaktualnieniu, natomiast kod, który korzysta z metod pobierających, nie będzie podlegać takim zmianom.
- Metoda
get_serviceinicjuje usługi przed ich zwróceniem. Jeśli importujesz usługi bezpośrednio, musisz je zainicjować ręcznie przed wysłaniem żądań.