VS Code や PyCharm などの IDE には、Python 言語のコード補完機能が組み込まれています。
google-ads-python ライブラリは、GoogleAdsClient クラスの getter メソッドを使用して、実行時に protobuf メッセージ クラスを動的に生成します。これにより、ソースコードの静的解析に依存する IDE のコード補完機能が阻害される可能性があります。
ゲッター メソッドを使用する代わりに、protobuf メッセージ クラスを直接インポートすることで、静的解析に依存するコード補完ツールとの互換性を向上させることができます。
動的にインポートされた 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()
生成されたクラスを直接インポートすると、コード補完には役立ちますが、次のようなデメリットもあります。
- 特定のクラスがどのモジュールにあるかは必ずしも明らかではないため、正しいインポート パスを見つけるのが難しい場合があります。
- 生成されたクラスのディレクトリ構造は、クライアント ライブラリの新しいバージョンで変更される可能性があります。クラスを直接インポートすると、アップグレード時にコードが破損する可能性がありますが、ゲッター メソッドを使用するコードは、このような変更の影響を受けません。
get_serviceメソッドは、サービスを初期化してから返します。サービスを直接インポートする場合は、リクエストを行う前に手動で初期化する必要があります。