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