IDE 코드 완성

VS CodePyCharm과 같은 IDE는 Python 언어에 대한 기본 코드 작성을 제공합니다.

google-ads-python 라이브러리는 GoogleAdsClient 클래스의 getter 메서드를 사용하여 런타임에 protobuf 메시지 클래스를 동적으로 생성하므로 소스 코드의 정적 분석에 의존하는 IDE 코드 완성 기능이 저해될 수 있습니다.

getter 메서드를 사용하는 대신 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. 생성된 클래스의 디렉터리 구조는 새 버전의 클라이언트 라이브러리에 따라 변경될 수 있습니다. 클래스를 직접 가져오면 업그레이드할 때 코드가 손상될 수 있지만, getter 메서드를 사용하는 코드는 이러한 유형의 변경사항에 영향을 받지 않습니다.
  3. get_service 메서드는 서비스를 반환하기 전에 서비스를 초기화합니다. 서비스를 직접 가져오는 경우 요청을 하기 전에 수동으로 초기화해야 합니다.