Такие IDE, как VS Code и PyCharm, предлагают встроенное автодополнение кода для языка Python.
Библиотека google-ads-python динамически генерирует классы сообщений protobuf во время выполнения, используя методы получения в классе GoogleAdsClient , что может подавлять функции автодополнения кода IDE, которые полагаются на статический анализ исходного кода.
Совместимость с инструментами автодополнения кода, которые полагаются на статический анализ, можно улучшить, импортируя классы сообщений protobuf напрямую, вместо использования методов получения .
Использование динамически импортируемых классов сообщений Protobuf. Этот подход обычно несовместим с инструментами автодополнения кода.
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")Использование напрямую импортированных классов сообщений Protobuf. Такой подход позволяет использовать инструменты автодополнения кода.
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()
Хотя прямой импорт сгенерированных классов помогает при автодополнении кода, он также имеет некоторые недостатки:
- Не всегда очевидно, в каком модуле находится данный класс, поэтому поиск правильного пути импорта может оказаться затруднительным.
- Структура каталогов сгенерированных классов может меняться в новых версиях клиентской библиотеки. Если вы импортируете классы напрямую, ваш код может быть сломан при обновлении, тогда как код, использующий методы-геттеры, не будет затронут подобными изменениями.
- Метод
get_serviceинициализирует сервисы перед их возвратом. При прямом импорте сервисов их необходимо инициализировать вручную перед выполнением запросов.