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 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.
Để cải thiện khả năng tương thích với các công cụ hoàn tất mã dựa trên phân tích tĩnh, bạn có thể:
- Sử dụng chú thích loại với phương thức getter động (nên dùng).
- Nhập trực tiếp các lớp thông báo protobuf và ứng dụng dịch vụ.
Nhập động bằng gợi ý về loại
Việc sử dụng tính năng nhập động đảm bảo mã của bạn vẫn linh hoạt trong các bản cập nhật thư viện. Việc thêm chú thích kiểu cho phép hoàn thành mã IDE mà không làm mất lợi ích của việc khởi tạo động:
from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.v26.resources.types.campaign import (
Campaign,
)
client = GoogleAdsClient.load_from_storage()
# Type hints allow the IDE to provide code completion suggestions while
# retaining dynamic class generation.
campaign: Campaign = client.get_type("Campaign")
Nhập trực tiếp
Bạn cũng có thể nhập trực tiếp các lớp thông báo protobuf. Phương pháp này cho phép tính năng hoàn thành mã IDE hoạt động ngay mà không cần sử dụng các phương thức getter:
from google.ads.googleads.v26.resources import Campaign
# The Campaign class is imported directly, enabling the IDE to read the
# class definition and make code completion suggestions.
campaign = Campaign()
Nhược điểm của tính năng nhập trực tiếp
Mặc dù việc nhập trực tiếp các lớp được tạo giúp hoàn thành mã, nhưng cũng có một số đánh đổi:
- Khó tìm hơn: Không phải lúc nào cũng rõ ràng mô-đun nào chứa một lớp nhất định, vì vậy, việc tìm đúng đường dẫn nhập có thể gặp khó khăn.
- Dễ hỏng khi nâng cấp: Cấu trúc thư mục của các lớp được tạo có thể thay đổi theo 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 phương thức getter không bị ảnh hưởng bởi các loại thay đổi này.
Cần khởi chạy thủ công: Phương thức
get_servicekhởi chạy các dịch vụ có chế độ xác thực, chế độ cài đặt truyền tải và trình chặn gRPC (đính kèm các tiêu đề nhưlogin-customer-idvàlinked-customer-id, xử lý việc ghi nhật ký và gói lỗi trongGoogleAdsException) trước khi trả về các dịch vụ đó. Nếu bạn nhập và tạo thực thể cho các dịch vụ trực tiếp, thì các trình chặn đó sẽ bị bỏ qua và bạn phải định cấu hình thông tin xác thực cũng như kênh truyền tải theo cách thủ công:from google.ads.googleads.v26.services.services import ( campaign_service as campaign_service_module, ) # Dynamic service getter (initializes credentials, transport, and gRPC # interceptors automatically). campaign_service = client.get_service("CampaignService") # Direct service client import (requires manual credential and interceptor # configuration). campaign_service_client = campaign_service_module.CampaignServiceClient( credentials=client.credentials, )