Shiboken模块#
函数#
def
isValid
(obj)def
wrapInstance
(address, type)def
getCppPointer
(obj)def
delete
(obj)def
isOwnedByPython
(obj)def
wasCreatedByPython
(obj)def
dump
(obj)def
disassembleFrame
(marker)
详细描述#
此Python模块可用于访问与我们的绑定技术相关的内部信息。访问此内部信息是必需的,例如:将PySide与提供Python脚本的基于Qt的程序(如Maya™)集成,或仅用于调试目的。
某些函数描述中提到的“Shiboken对象”,这意味着使用Shiboken创建的任何Python类型的实例。
导入模块
from shiboken6 import Shiboken
- Shiboken.isValid(obj)#
给定一个Python对象,如果对象方法可以在未引发异常的情况下调用,则返回True。当底层C++对象被销毁或无法访问时,Python包装器变为无效。
- Shiboken.wrapInstance(address, type)#
为给定内存地址处实例化的C++对象创建一个Python包装器 - 返回的对象类型将与用户给定的相同。
类型必须是Shiboken类型,当返回的Python对象达到零引用时,C++对象不会被销毁。
如果地址无效或没有指向给定类型的C++对象的指针,行为将是未定义的。
- Shiboken.getCppPointer(obj)#
返回一个包含给定对象所包裹的C++实例内存地址的长整数元组。
- Shiboken.delete(obj)#
删除给定的Python对象所包裹的C++对象。
- Shiboken.isOwnedByPython(obj)#
给定一个Python对象,如果Python负责删除底层的C++对象,则返回True,否则返回False。
如果对象不是基于Shiboken的对象,则抛出TypeError。
- Shiboken.wasCreatedByPython(obj)#
如果给定的Python对象是由Python创建的,则返回true。
- Shiboken.dump(obj)#
返回包含对象实现定义信息的字符串。此方法应仅由创建自己绑定的开发人员用于调试目的,因为在不同版本之间,字符串格式不保证相同。
如果对象不是基于Shiboken的对象,则打印一条消息。
- Shiboken.disassembleFrame(label)#
将当前执行的Python帧打印到stdout并刷新。反汇编通过某些标签装饰。例如
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函数。
此方法应仅由开发人员用于调试目的。