前のトピックへ

38.2. aetools — OSA クライアントのサポート

次のトピックへ

38.4. aetypes — AppleEvent オブジェクト

このページ

38.3. aepack — Python変数とAppleEventデータコンテナ間の変換

プラットフォーム: Mac

aepack モジュールは、Python 変数から AppleEvent ディスクリプタへの変換(パック)と、その逆に変換(アンパック)する関数を定義しています。 Python 内では AppleEvent ディスクリプタは、組み込み型である AEDesc の Python オブジェクトとして扱われます。 AEDescCarbon.AE モジュールで定義されています。

警告

このモジュールは 3.0 で削除されます。

aepack モジュールは次の関数を定義しています。

aepack.pack(x[, forcetype])

Python 値 x を変換した値を保持する AEDesc オブジェクトを返します。 forcetype を与えることで、結果のディスクリプタ型を指定できます。 それ以外では、Python 型から Apple Eventディスクリプタ型へのデフォルトのマッピングが使われます。マッピングは次の通りとなります。

Python type descriptor type
FSSpec typeFSS
FSRef typeFSRef
Alias typeAlias
integer typeLong (32 bit integer)
float typeFloat (64 bit floating point)
string typeText
unicode typeUnicodeText
list typeAEList
dictionary typeAERecord
instance see below

x がPythonインスタンスなら、この関数は __aepack__() メソッドを呼びだそうとします。このメソッドは AEDesc オブジェクトを返します。

x の変換が上で定義されていない場合は、この関数は、テキストディスクリプタとしてエンコードされた、値の(repr()関数による)Python文字列表現が返されます。

aepack.unpack(x[, formodulename])

xAEDesc タイプのオブジェクトでなければいけません。 この関数は、Apple Eventディスクリプタ x のデータの Python オブジェクト表現を返します。単純な AppleEvent データ型(整数、テキスト、 浮動小数点数)の、対応する Python 型が返されます。Apple Event リストは Python リストとして返され、リストの要素は再帰的にアンパックされます。 formodulename の指定がない場合、オブジェクト参照 (例: line 3 of document 1)が、 aetypes.ObjectSpecifier のインスタンスとして返されます。ディスクリプタ型が typeFSS である AppleEvent ディスクリプタが、 FSSpec オブジェクトとして返されます。 AppleEventレコードディスクリプタが、再帰的にアンパックされた、型の4 文字キーと要素を持つPython辞書として返されます。

オプションの formodulename 引数は gensuitemodule より作成されるスタブパッケージにより利用され、オブジェクト指定子のための OSA クラスをモジュールの中で見つけられることを保証します。これは、 例えば、ファインダがウィンドウに対してオブジェクト指定子を返す場合、 Finder.Window のインスタンスが得られ、 aetypes.Window が得られないことを保証します。 前者は、ファインダ上のウィンドウが持っている、すべての特性および要素のことを知っています。一方、後者のものはそれらのことを知りません。

参考

Module Carbon.AE
Apple Eventマネージャルーチンへの組み込みアクセス
Module aetypes
Apple Eventディスクリプタ型としてコードされたPython定義