Completamento del codice IDE

Gli IDE come VS Code e PyCharm offrono il completamento automatico del codice integrato per il linguaggio Python.

La libreria google-ads-python genera dinamicamente le classi di messaggi protobuf in fase di runtime utilizzando i metodi getter nella classe GoogleAdsClient, il che può inibire le funzionalità di completamento automatico del codice IDE che si basano sull'analisi statica del codice sorgente.

Puoi migliorare la compatibilità con gli strumenti di completamento automatico del codice che si basano sull'analisi statica importando direttamente le classi di messaggi protobuf anziché utilizzare i metodi getter.

  • Utilizzo delle classi di messaggi protobuf importate dinamicamente. Questo approccio in genere non è compatibile con gli strumenti di completamento automatico del codice.

    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")
    
  • Utilizzo delle classi di messaggi protobuf importate direttamente. Questo approccio consente agli strumenti di completamento automatico del codice di funzionare.

    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()
    

Sebbene l'importazione diretta delle classi generate aiuti il completamento automatico del codice, presenta anche alcuni svantaggi:

  1. Non è sempre ovvio in quale modulo si trova una determinata classe, quindi trovare il percorso di importazione corretto può essere difficile.
  2. La struttura delle directory delle classi generate può cambiare con le nuove versioni della libreria client. Se importi le classi direttamente, il codice potrebbe non funzionare quando esegui l'upgrade, mentre il codice che utilizza i metodi getter non sarà interessato da questi tipi di modifiche.
  3. Il metodo get_service inizializza i servizi prima di restituirli. Se importi i servizi direttamente, dovrai inizializzarli manualmente prima di effettuare le richieste.