Domanda

Prima di tutto, mi scusi per qualsiasi incoerenza nel riquadro di questa domanda. Probabilmente ne ha alcuni, ma davvero non lo so meglio.

Questa domanda è stata sollevata nel contesto del controllo di iTunes tramite COM da Python.

>>> 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>

Quello che vorrei fare è recuperare " IiTunes " da iTunes e " IITLibraryPlaylist " da lib. Ho provato a digitare (itunes) e digitare (lib) ma entrambi restituiscono solo " " e non è quello che sto cercando.

Grazie.

È stato utile?

Soluzione

Sfortunatamente non ho a disposizione una macchina Windows da provare, ma penso che itunes .__ class__ sia la classe (old_style) dell'oggetto itunes in questione e lib .__ class__ quello di lib . Quindi, guardando l'attributo __name__ delle classi dovresti darti ciò che desideri.

Sfortunatamente si tratta di classi di vecchio stile (quindi type (...) non funziona bene), ma win32com è in circolazione da LUNGO tempo, da molto prima della nuova brillante- le classi di stile sono nate in Python 2.2, quindi è del tutto comprensibile, credo ;-).

Altri suggerimenti

Il motivo principale di questo errore di attributo è dovuto al fatto che il server COM è passato dal binding tardivo (dinamico) al binding anticipato (statico).

  • In Late Binding, ogni volta che viene chiamato un metodo, l'oggetto viene interrogato per il metodo e se ha esito positivo, è possibile effettuare la chiamata.
  • In Early Binding, le informazioni sul modello a oggetti sono determinate in anticipo dalle informazioni sul tipo fornite dalla chiamata all'oggetto. L'associazione anticipata utilizza MakePy. Inoltre, l'associazione precoce fa distinzione tra maiuscole e minuscole.

Prova:

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

Questo costringerà il server COM a mettere a fuoco il modulo dinamico che dovrebbe darti solo l'oggetto COM di iTunes.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top