38.3. aepack — Python 变量和 AppleEvent 数据容器之间的转换

aepack模块定义用于将 Python 变量转换(打包)为 AppleEventDescriptors 并返回(解压缩)的函数。在 Python 中,AppleEventDescriptors 由模块Carbon.AE中定义的内置类型AEDesc的 Python 对象处理。

Note

该模块已在 Python 3.x 中删除。

aepack模块定义以下Function:

  • aepack. pack(* x * [,* forcetype *])
    • 返回一个AEDesc对象,其中包含 Python 值 x 的转换。如果提供了* forcetype *,则它指定结果的 Descriptors 类型。否则,将使用 Python 类型到 Apple EventDescriptors 类型的默认 Map,如下所示:
Python typedescriptor type
FSSpectypeFSS
FSReftypeFSRef
AliastypeAlias
integertypeLong(32 位整数)
floattypeFloat(64 位浮点)
stringtypeText
unicodetypeUnicodeText
listtypeAEList
dictionarytypeAERecord
instancesee below

如果* x *是 Python 实例,则此函数try调用__aepack__()方法。此方法应返回AEDesc对象。

如果上面未定义转换* x *,则此函数返回编码为文本 Descriptors 的值(repr()函数)的 Python 字符串表示形式。

  • aepack. unpack(* x * [,* formodulename *])
      • x 必须是AEDesc类型的对象。此函数返回 Apple 事件 Descriptors x *中数据的 Python 对象表示形式。简单的 AppleEvent 数据类型(整数,文本,浮点数)作为其明显的 Python 对应物返回。 Apple Event 列表作为 Python 列表返回,并且 list 元素以递归方式解压缩。除非指定了formodulename,否则对象引用(例如line 3 of document 1)作为aetypes.ObjectSpecifier的实例返回。Descriptors 类型为 typeFSS 的 AppleEventDescriptors 以FSSpec对象的形式返回。 AppleEvent 记录 Descriptors 以 Python 字典的形式返回,带有 4 个字符的字符串键和元素以递归方式解压缩。

可选的formodulename参数由gensuitemodule生成的存根软件包使用,并确保在正确的模块中查找对象说明符的 OSA 类。这样可以确保,例如,如果 Finder 为窗口返回对象说明符,则您将获得Finder.Window而不是通用aetypes.Window的实例。前者不知道 Finder 中窗口具有的所有属性和元素,而后者则不知道。

See also

  • Module Carbon.AE

  • 内置对 Apple Event Manager 例程的访问。

  • Module aetypes

  • Apple 事件 Descriptors 类型的代码的 Python 定义。