Uzupełnianie kodu w IDE

Ś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:

  1. Nie zawsze jest oczywiste, w którym module znajduje się dana klasa, więc znalezienie prawidłowej ścieżki importu może być trudne.
  2. 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.
  3. Metoda get_service inicjuje usługi przed ich zwróceniem. Jeśli importujesz usługi bezpośrednio, musisz je zainicjować ręcznie przed wysłaniem żądań.