Các IDE như VS Code và PyCharm cung cấp tính năng hoàn thành mã tích hợp cho ngôn ngữ Python.
Thư viện google-ads-python tạo các lớp thông báo protobuf một cách linh động trong thời gian chạy bằng cách sử dụng các phương thức getter trên lớp GoogleAdsClient, điều này có thể ngăn chặn các tính năng hoàn thành mã IDE dựa trên việc phân tích tĩnh mã nguồn.
Bạn có thể cải thiện khả năng tương thích với các công cụ hoàn thành mã dựa trên phân tích tĩnh bằng cách nhập trực tiếp các lớp thông báo protobuf thay vì sử dụng các phương thức getter.
Sử dụng các lớp thông báo protobuf được nhập động. Phương pháp này thường không tương thích với các công cụ hoàn thành mã.
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")Sử dụng các lớp thông báo protobuf được nhập trực tiếp. Phương pháp này cho phép các công cụ hoàn thành mã hoạt động.
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()
Mặc dù việc nhập trực tiếp các lớp được tạo giúp hoàn tất mã, nhưng cũng có một số nhược điểm:
- Không phải lúc nào bạn cũng biết rõ một lớp nhất định nằm trong mô-đun nào, vì vậy, bạn có thể gặp khó khăn khi tìm đường dẫn nhập chính xác.
- Cấu trúc thư mục của các lớp được tạo có thể thay đổi theo các phiên bản mới của thư viện ứng dụng. Nếu bạn nhập trực tiếp các lớp, mã của bạn có thể bị hỏng khi bạn nâng cấp, trong khi mã sử dụng các phương thức getter sẽ không bị ảnh hưởng bởi những loại thay đổi này.
- Phương thức
get_servicekhởi chạy các dịch vụ trước khi trả về. Nếu nhập trực tiếp các dịch vụ, bạn sẽ cần khởi chạy các dịch vụ đó theo cách thủ công trước khi đưa ra yêu cầu.