आईडीई में कोड पूरा करने की सुविधा

VS Code और PyCharm जैसे आईडीई, Python भाषा के लिए कोड पूरा करने की सुविधा देते हैं.

google-ads-python लाइब्रेरी, रनटाइम के दौरान GoogleAdsClient क्लास पर getter methods का इस्तेमाल करके, protobuf मैसेज क्लास को डाइनैमिक तरीके से जनरेट करती है. इससे, आईडीई की कोड पूरा करने की उन सुविधाओं पर असर पड़ सकता है जो सोर्स कोड के स्टैटिक विश्लेषण पर निर्भर करती हैं.

getter methods का इस्तेमाल करने के बजाय, सीधे तौर पर protobuf मैसेज क्लास इंपोर्ट करके, कोड पूरा करने वाले टूल के साथ बेहतर तरीके से काम किया जा सकता है. ये टूल, स्टैटिक विश्लेषण पर निर्भर होते हैं.

  • डाइनैमिक तौर पर इंपोर्ट की गई 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")
    
  • सीधे तौर पर इंपोर्ट की गई प्रोटॉबफ़ मैसेज क्लास का इस्तेमाल करना. इस तरीके से, कोड पूरा करने वाले टूल काम कर पाते हैं.

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

जनरेट की गई क्लास को सीधे तौर पर इंपोर्ट करने से, कोड अपने-आप पूरा होने की सुविधा मिलती है. हालांकि, इससे कुछ नुकसान भी होते हैं:

  1. यह हमेशा साफ़ तौर पर पता नहीं चलता कि दी गई क्लास किस मॉड्यूल में मौजूद है. इसलिए, सही इंपोर्ट पाथ ढूंढना मुश्किल हो सकता है.
  2. क्लाइंट लाइब्रेरी के नए वर्शन के साथ, जनरेट की गई क्लास का डायरेक्ट्री स्ट्रक्चर बदल सकता है. क्लास को सीधे तौर पर इंपोर्ट करने पर, अपग्रेड करते समय आपका कोड काम नहीं कर सकता. हालांकि, गेटर मेथड का इस्तेमाल करने वाले कोड पर इस तरह के बदलावों का कोई असर नहीं पड़ेगा.
  3. get_service तरीका, सेवाओं को वापस भेजने से पहले उन्हें शुरू करता है. अगर आपने सेवाओं को सीधे तौर पर इंपोर्ट किया है, तो अनुरोध करने से पहले आपको उन्हें मैन्युअल तरीके से शुरू करना होगा.