IDE のコード補完

VS CodePyCharm などの 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()
    

生成されたクラスを直接インポートすると、コード補完には役立ちますが、次のようなデメリットもあります。

  1. 特定のクラスがどのモジュールにあるかは必ずしも明らかではないため、正しいインポート パスを見つけるのが難しい場合があります。
  2. 生成されたクラスのディレクトリ構造は、クライアント ライブラリの新しいバージョンで変更される可能性があります。クラスを直接インポートすると、アップグレード時にコードが破損する可能性がありますが、ゲッター メソッドを使用するコードは、このような変更の影響を受けません。
  3. get_service メソッドは、サービスを初期化してから返します。サービスを直接インポートする場合は、リクエストを行う前に手動で初期化する必要があります。