Shiboken 模块

函数

详细描述

这个Python模块可用于访问与我们的绑定技术相关的内部信息。访问这些内部信息是必要的,例如:将PySide与提供Python脚本的基于Qt的程序(如Maya™)集成,或仅用于调试目的。

一些函数描述提到“基于Shiboken的对象”,这意味着使用Shiboken创建的任何Python类型的Python对象实例。

要导入模块:

from shiboken6 import Shiboken
Shiboken.isValid(obj: object) bool

给定一个Python对象,如果可以在不抛出异常的情况下调用对象方法,则返回True。当底层的C++对象被销毁或无法访问时,Python包装器将变为无效。

Parameters:

obj – 要验证的Python对象。

Shiboken.wrapInstance(address: int, python_type: type) Shiboken.object

为在给定内存地址实例化的C++对象创建一个Python包装器 - 返回的对象类型将与用户给定的类型相同。

类型必须是Python类型。当返回的Python对象的引用计数为零时,C++对象不会被销毁。

如果地址无效或未指向给定类型的C++对象,则行为未定义。

Parameters:
  • address (int) – C++ 对象的地址。

  • python_type (type) – 对应C++对象的Python类型。

Shiboken.getCppPointer(obj: Shiboken.object) tuple[int, ...]

返回一个包含由给定对象包装的C++实例的内存地址的长整型元组。

Parameters:

obj – Shiboken 对象。

Shiboken.delete(obj: Shiboken.object)

删除由给定Python对象包装的C++对象。

Parameters:

obj – Shiboken 对象。

Shiboken.ownedByPython(obj: Shiboken.object) bool

给定一个Shiboken对象,如果Python负责删除底层的C++对象,则返回True,否则返回False。

如果对象不是基于Shiboken的对象,则会抛出TypeError。

Parameters:

obj – Shiboken 对象。

Shiboken.createdByPython(obj: Shiboken.object) bool

如果给定的Python对象是由Python创建的,则返回true。

Parameters:

obj – Shiboken 对象。

Shiboken.dump(obj: object) str

返回一个包含有关对象的实现定义信息的字符串。 此方法应由创建自己绑定的开发人员用于调试目的,因为不保证字符串格式在不同版本之间保持一致。

如果对象不是基于Shiboken的对象,则会打印一条消息。

Parameters:

obj – Python 对象。

Shiboken.disassembleFrame(label: str)

将当前执行的Python帧打印到标准输出并刷新。 反汇编由一些标签装饰。示例:

lambda: 42

在C++内部显示为

<label> BEGIN
1           0 LOAD_CONST               1 (42)
            2 RETURN_VALUE
<label> END

当你想在disassembleFrame函数处设置断点,并且你从C++中使用它时,你使用纯函数名称。

当你想从Python中使用它时,你可以将其插入到你的Python代码中,然后可能在SbkShibokenModule_disassembleFrame处设置一个断点,这是生成的包装器。

label 在 C++ 中是一个简单的字符串。在 Python 中,你可以使用任何对象;内部会调用 str 函数。

此方法应由开发人员用于调试目的。

Parameters:

标签 – Python 字符串。

Shiboken.dumpTypeGraph(file_name: str) bool

将libshiboken中存在的类型的继承图转储到.dot文件中,以便与Graphviz一起使用。

Parameters:

file_name – 要写入图形的文件名。

Shiboken.dumpWrapperMap()

将libshiboken中现有的包装器映射转储到标准错误。

Shiboken.dumpConverters()

将libshiboken中现有的命名转换器映射转储到标准错误。

class Shiboken.VoidPtr(address, size=-1, writeable=0)
Parameters:
  • address – (PyBuffer, SbkObject, int, VoidPtr)

  • size – int

  • writeable – int

表示通过地址和大小表示的一块内存,并实现了buffer协议。 它可以从buffer、基于Shiboken的对象、内存地址或另一个VoidPtr实例构造。

toBytes()
Return type:

字节

返回内容为bytes