Os ambientes de desenvolvimento integrado, como o VS Code e o PyCharm, oferecem preenchimento automático de código integrado para a linguagem Python.
A biblioteca google-ads-python gera classes de mensagens protobuf de forma dinâmica
no tempo de execução usando métodos getter na classe GoogleAdsClient,
o que pode inibir os recursos de preenchimento automático de código do ambiente de desenvolvimento integrado que dependem da análise estática do
código-fonte.
É possível melhorar a compatibilidade com ferramentas de preenchimento automático de código que dependem da análise estática importando classes de mensagens protobuf diretamente, em vez de usar métodos getter.
Usar classes de mensagens protobuf importadas dinamicamente. Essa abordagem normalmente não é compatível com ferramentas de preenchimento automático 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 preenchimento automático de código funcionem.
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()
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. Por isso, 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 interrompido ao fazer upgrade. Já 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.