В таких средах разработки, как 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.v23.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инициализирует сервисы перед их возвратом. Если вы импортируете сервисы напрямую, вам потребуется инициализировать их вручную перед отправкой запросов.