Ambientes de desenvolvimento integrado como VS Code e PyCharm oferecem preenchimento automático de código integrado para a linguagem Python.
A biblioteca google-ads-python gera classes de mensagens protobuf dinamicamente
em tempo de execução usando métodos getter na classe GoogleAdsClient,
o que pode impedir recursos de conclusão de código do IDE que dependem da análise estática do
código-fonte.
Para melhorar a compatibilidade com ferramentas de conclusão de código que dependem de análise estática, importe as classes de mensagens protobuf diretamente, em vez de usar métodos getter.
Usando classes de mensagens protobuf importadas dinamicamente. Essa abordagem geralmente não é compatível com ferramentas de conclusão de código.
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")Usar classes de mensagens protobuf importadas diretamente. Essa abordagem permite que as ferramentas de conclusão de código funcionem.
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()
Embora a importação direta de classes geradas ajude no preenchimento automático de código, ela também apresenta algumas desvantagens:
- Nem sempre é óbvio em qual módulo uma determinada classe está localizada, então encontrar o caminho de importação correto pode ser difícil.
- A estrutura de diretórios das classes geradas pode mudar com novas versões da biblioteca de cliente. Se você importar classes diretamente, seu código poderá ser corrompido ao fazer upgrade, enquanto o código que usa métodos getter não será afetado por esses tipos de mudanças.
- O método
get_serviceinicializa os serviços antes de retorná-los. Se você importar serviços diretamente, será necessário inicializá-los manualmente antes de fazer solicitações.