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จะเริ่มต้นบริการก่อนที่จะส่งคืน หาก นำเข้าบริการโดยตรง คุณจะต้องเริ่มต้นด้วยตนเองก่อน ส่งคำขอ