Środowiska IDE, takie jak VS Code i PyCharm oferują wbudowaną funkcję uzupełniania kodu w języku Python.
Biblioteka google-ads-python generuje klasy komunikatów protobuf dynamicznie
w czasie działania programu za pomocą metod pobierających w klasie GoogleAdsClient,
co może utrudniać działanie funkcji uzupełniania kodu w środowiskach IDE, które opierają się na statycznej analizie
kodu źródłowego.
Możesz zwiększyć zgodność z narzędziami do uzupełniania kodu, które opierają się na statycznej analizie, importując klasy komunikatów protobuf bezpośrednio, zamiast używać metod pobierających.
Używanie dynamicznie importowanych klas komunikatów protobuf. To podejście zwykle nie jest zgodne 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")Używanie bezpośrednio importowanych klas komunikatów protobuf. To podejście umożliwia działanie narzędzi do uzupełniania kodu.
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()
Bezpośrednie importowanie wygenerowanych klas pomaga w uzupełnianiu kodu, ale ma też pewne wady:
- Nie zawsze jest oczywiste, w którym module znajduje się dana klasa, dlatego 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, Twój kod może przestać działać po uaktualnieniu, natomiast kod, który używa metod pobierających, nie będzie miał wpływu na te typy zmian.
- 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ń.