IDE seperti VS Code dan PyCharm menawarkan penyelesaian kode bawaan untuk bahasa Python.
Library google-ads-python menghasilkan class pesan protobuf secara dinamis
saat runtime menggunakan metode getter pada class GoogleAdsClient,
yang dapat menghambat fitur penyelesaian kode IDE yang mengandalkan analisis statis
kode sumber.
Anda dapat meningkatkan kompatibilitas dengan alat penyelesaian kode yang mengandalkan analisis statis dengan mengimpor class pesan protobuf secara langsung, bukan menggunakan metode getter.
Menggunakan class pesan protobuf yang diimpor secara dinamis. Pendekatan ini biasanya tidak kompatibel dengan alat penyelesaian kode.
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")Menggunakan class pesan protobuf yang diimpor secara langsung. Pendekatan ini memungkinkan alat penyelesaian kode berfungsi.
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()
Meskipun mengimpor class yang dihasilkan secara langsung membantu penyelesaian kode, tindakan ini juga menimbulkan beberapa kerugian:
- Tidak selalu jelas di modul mana class tertentu berada, sehingga menemukan jalur impor yang benar bisa jadi sulit.
- Struktur direktori class yang dihasilkan dapat berubah dengan versi baru library klien. Jika Anda mengimpor class secara langsung, kode Anda mungkin rusak saat Anda melakukan upgrade, sedangkan kode yang menggunakan metode getter tidak akan terpengaruh oleh jenis perubahan ini.
- Metode
get_servicemenginisialisasi layanan sebelum menampilkannya. Jika mengimpor layanan secara langsung, Anda harus menginisialisasinya secara manual sebelum membuat permintaan.