סביבות פיתוח משולבות (IDE) כמו VS Code ו-PyCharm מציעות השלמת קוד מובנית לשפת Python.
הספרייה google-ads-python יוצרת באופן דינמי מחלקות של הודעות protobuf בזמן ריצה באמצעות שיטות getter במחלקה GoogleAdsClient, מה שיכול להפריע לתכונות של השלמת קוד ב-IDE שמסתמכות על ניתוח סטטי של קוד המקור.
כדי לשפר את התאימות לכלי השלמת קוד שמסתמכים על ניתוח סטטי, אפשר לייבא ישירות מחלקות של הודעות protobuf, במקום להשתמש בשיטות getter.
שימוש במחלקות של הודעות protobuf שיובאו באופן דינמי. הגישה הזו בדרך כלל לא תואמת לכלים להשלמת קוד.
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")שימוש במחלקות הודעות של protobuf שיובאו ישירות. הגישה הזו מאפשרת לכלי השלמת קוד לפעול.
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()
ייבוא ישיר של מחלקות שנוצרו עוזר להשלמת קוד, אבל יש לו גם כמה חסרונות:
- לא תמיד ברור באיזה מודול נמצאת מחלקה מסוימת, ולכן יכול להיות שיהיה קשה למצוא את נתיב הייבוא הנכון.
- מבנה הספריות של מחלקות שנוצרו יכול להשתנות בגרסאות חדשות של ספריית הלקוח. אם מייבאים מחלקות ישירות, יכול להיות שהקוד ייפסק כשמשדרגים, אבל קוד שמשתמש בשיטות getter לא יושפע מסוגי השינויים האלה.
- השיטה
get_serviceמאתחלת שירותים לפני שהיא מחזירה אותם. אם מייבאים שירותים ישירות, צריך לאתחל אותם באופן ידני לפני ששולחים בקשות.