การเติมโค้ดใน IDE

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

แม้ว่าการนำเข้าคลาสที่สร้างขึ้นโดยตรงจะช่วยในการเติมโค้ดอัตโนมัติ แต่ก็มีข้อเสียบางประการด้วย ดังนี้

  1. บางครั้งเราก็ไม่ทราบว่าคลาสหนึ่งๆ อยู่ในโมดูลใด การค้นหาเส้นทางการนำเข้าที่ถูกต้องจึงอาจเป็นเรื่องยาก
  2. โครงสร้างไดเรกทอรีของคลาสที่สร้างขึ้นอาจเปลี่ยนแปลงได้เมื่อมีการเปิดตัว ไลบรารีของไคลเอ็นต์เวอร์ชันใหม่ หากคุณนำเข้าคลาสโดยตรง โค้ด อาจใช้ไม่ได้เมื่ออัปเกรด ในขณะที่โค้ดที่ใช้วิธีการ Getter จะ ไม่ได้รับผลกระทบจากการเปลี่ยนแปลงประเภทนี้
  3. เมธอด get_service จะเริ่มต้นบริการก่อนที่จะส่งคืน หาก นำเข้าบริการโดยตรง คุณจะต้องเริ่มต้นด้วยตนเองก่อน ส่งคำขอ