VS Code 및PyCharm과 같은 IDE는 Python 언어에 대한 기본 제공 코드 완성을 제공합니다.
google-ads-python 라이브러리는 소스 코드의 정적 분석에 의존하는 IDE 코드 완성 기능을 억제할 수 있는 GoogleAdsClient 클래스의 getter methods를 사용하여 런타임에 protobuf 메시지 클래스를 동적으로 생성합니다.
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.v25.resources import Campaign # The Campaign class is imported directly, enabling the IDE to read the # class definition and make code completion suggestions. campaign = Campaign()
생성된 클래스를 직접 가져오면 코드 완성에 도움이 되지만 다음과 같은 몇 가지 단점도 있습니다.
- 지정된 클래스가 있는 모듈이 항상 명확하지 않으므로 올바른 가져오기 경로를 찾기가 어려울 수 있습니다.
- 생성된 클래스의 디렉터리 구조는 클라이언트 라이브러리의 새 버전으로 변경될 수 있습니다. 클래스를 직접 가져오면 업그레이드할 때 코드가 중단될 수 있지만 getter 메서드를 사용하는 코드는 이러한 유형의 변경사항에 영향을 받지 않습니다.
get_service메서드는 서비스를 반환하기 전에 서비스를 초기화합니다. 서비스를 직접 가져오면 요청을 하기 전에 서비스를 수동으로 초기화해야 합니다.