VS Code ve PyCharm gibi IDE'ler, Python dili için yerleşik kod tamamlama özelliği sunar.
google-ads-python kitaplığı, GoogleAdsClient sınıfındaki getter yöntemlerini kullanarak çalışma zamanında protobuf mesaj sınıflarını dinamik olarak oluşturur. Bu durum, kaynak kodun statik analizine dayanan IDE kod tamamlama özelliklerini engelleyebilir.
Getter yöntemlerini kullanmak yerine protobuf mesaj sınıflarını doğrudan içe aktararak statik analize dayalı kod tamamlama araçlarıyla uyumluluğu artırabilirsiniz.
Dinamik olarak içe aktarılan protobuf mesaj sınıflarını kullanma. Bu yaklaşım genellikle kod tamamlama araçlarıyla uyumlu değildir.
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")Doğrudan içe aktarılan protobuf mesaj sınıflarını kullanma Bu yaklaşım, kod tamamlama araçlarının çalışmasını sağlar.
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()
Oluşturulan sınıfları doğrudan içe aktarmak kod tamamlama konusunda yardımcı olsa da bazı dezavantajları da vardır:
- Belirli bir sınıfın hangi modülde bulunduğu her zaman açıkça belli olmadığından doğru içe aktarma yolunu bulmak zor olabilir.
- Oluşturulan sınıfların dizin yapısı, istemci kitaplığının yeni sürümleriyle değişebilir. Sınıfları doğrudan içe aktarırsanız yükseltme yaptığınızda kodunuz bozulabilir. Getter yöntemlerini kullanan kod ise bu tür değişikliklerden etkilenmez.
get_serviceyöntemi, hizmetleri döndürmeden önce başlatır. Hizmetleri doğrudan içe aktarırsanız istekte bulunmadan önce bunları manuel olarak başlatmanız gerekir.