문제

우선, 이 질문에 일관성이 없는 점에 대해 사과드립니다.아마도 일부가 있을 수 있지만 실제로는 더 잘 알지 못합니다.

이 질문은 Python에서 COM을 통해 iTunes를 제어하는 ​​맥락에서 제기되었습니다.

>>> itunes = win32com.client.Dispatch("iTunes.Application")
>>> itunes
<win32com.gen_py.iTunes 1.12 Type Library.IiTunes instance at 0x27248400>
>>> lib = itunes.LibraryPlaylist
>>> lib
<win32com.gen_py.iTunes 1.12 Type Library.IITLibraryPlaylist instance at 0x27249880>

내가 하고 싶은 일은 '아이튠즈'아이튠즈에서'IIT도서관재생목록' lib에서.나는 type(itunes)과 type(lib)을 시도했지만 둘 다 ""만 반환하고 그것은 내가 찾고 있는 것이 아닙니다.

감사해요.

도움이 되었습니까?

해결책

불행히도 시도해 볼 수 있는 Windows 시스템이 없지만 제 생각엔 itunes.__class__ 의 (old_style) 클래스입니다. itunes 문제의 객체와 lib.__class__ 그것의 lib.그래서 살펴보면 __name__ 수업의 속성은 당신이 원하는 것을 제공해야합니다.

불행하게도 이러한 클래스는 구식 클래스입니다. type(...) 제대로 작동하지 않음), 그러나 win32com은 Python 2.2에서 빛나는 새 스타일 클래스가 탄생하기 훨씬 전부터 오랫동안 사용되어 왔기 때문에 완전히 이해할 수 있다고 생각합니다 ;-).

다른 팁

이 특성 오류가 발생하는 주된 이유는 COM 서버가 후기 바인딩(동적)에서 초기 바인딩(정적)으로 전환되었기 때문입니다.

  • Late Binding에서는 메소드가 호출될 때마다 객체에 해당 메소드를 쿼리하고 성공하면 호출을 수행할 수 있습니다.
  • Early Binding에서는 개체 호출에서 제공하는 형식 정보를 통해 개체 모델의 정보를 미리 결정합니다.초기 바인딩은 MakePy를 사용합니다.또한 초기 바인딩은 대소문자를 구분합니다.

노력하다:

itunes = win32com.client.dynamic.Dispatch("iTunes.Application")

이렇게 하면 COM 서버가 iTunes의 COM 개체만 제공하는 동적 모듈에 초점을 맞추게 됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top