所有Python对象都是一个pyObject
在aardio中使用py3.object封装该指针为对象,
并自动管理引用计数
将aardio值转换为pyObject
py3扩展库负责在与python交互时自动转换能转换的基础数据类型
其他对象aardio代码接触到的都会是py3.object
原始pyObject指针原则上保证不会返回给aardio调用代码
参数是py3.object封装对象
复制一个对象,并增加引用计数
并负责在封装对象销毁时释放一次pyObject引用计数
这里传入的参数是aardio值,或者是py3.object统一都会返回py3.object
py3扩展库基于这种兼容性自动转换所有aardio,python对象
参数@2为true,参数@1就必须是pyObject对象指针
返回pyObject封装对象,并负责在封装对象销毁时释放一次pyObject引用计数,
原始pyObject指针原则上保证不会返回给aardio调用代码
这种用法仅用于py扩展库内部使用
输入 Python 对象属性或函数名称。
如果首字符为 $ ,则返回支持命名参数的函数对象。
也就是说 pyObject.$fun 等价于 pyObject.fun.invoke。
该对象为 Python 函数对象时支持使用此方法调用 Python 函数,
也可以不写 call 函数,直接作为普通函数调用。
参数为不定个数的字符串、数值、布尔值等。
如果函数调用成功,
返回值除数值、布尔值、字符串、字节数组以外的值
在 aardio 中存为 py.object 对象
该对象为 Python 函数对象时支持使用此方法调用 Python 函数,
参数为tuple元数组对象
返回值为 py3.object对象,可使用 tostring 或 tonumber 等函数转换为aardio类型
检测是否布尔值
检测是否字节串
检测是否字典
检测是否浮点数
检测是否列表
检测是否整数
检测是否数值
检测是否字典
检测是否字符串,注意Py3中字符串都是Unicode,取回aardio都是UTF8编码
for( pyItem in py3Object.each() ){
/*创建迭代器用于遍历所有的项,返回一个值*/
}
[返回对象:py3Object](https://www.aardio.com/zh-cn/doc/library-reference/py3/object.html#py3Object)
读属性值,也可以用成员操作符获取。
除数值、布尔值、字符串、字节数组以外的值在 aardio 中存为 py.object 对象。
指定可选参数 @2 为 true 则不检查属性是否存在。
function(){
return PyEval_GetFuncDesc(owner.pyObject );
}
获取函数原型,返回值为字符串。
获取函数名,返回值为字符串。
获取函数名
返回指定索引的项,也可以用索引下标操作符 [] 取值。
除数值、布尔值、字符串、字节数组以外的值在 aardio 中存为 py.object 对象
返回类型特性,用法请参考此函数源码以及 Python 文档
是否存在指定的属性
检测类型特性,这个函数实现了C++中的PyType_HasFeature宏相同的功能
该对象为 Python 函数对象时支持使用此方法调用 Python 函数,
与通过 call 方法调用不同的是 invoke 支持传递命名参数,
如果函数调用成功,返回值除数值、布尔值、字符串、字节数组以外的值
在 aardio 中存为 py.object 对象。
pyObject.func.invoke 可缩写为 pyObject.$func
如果参数@1是未指定元表的纯表对象,且没有 pyObject 成员,
则将该表中的名值对作为调用时的命名参数,
该表中的数组成员作为调用时的匿名参数,
注意名值对参数应当且只能写在最前面,所有参数请用逗号分隔。
如果指定了第 2 个参数或更多参数,则 kwarg 的数组成员被忽略。
如果参数 @1 不符合前述规则,
则与 call 调用相同的方式将所有参数作为调用时的匿名参数。
如果参数 @1 为 null,则忽略第一个参数并禁用命名参数。
并将第二个参数作为第一个参数,后续参数依次前移。
该对象为 Python 函数对象时支持使用此方法调用 Python 函数,
与通过 call 方法调用不同的是 invokeObject 支持传递命名参数,
调用成功返回值为 py3.object 对象。
invoke 函数调用 invokeObject 函数并会转换基础类型的值为纯 aardio 值。
如果参数@1是未指定元表的纯表对象,且没有 pyObject 成员,
则将该表中的名值对作为调用时的命名参数,
该表中的数组成员作为调用时的匿名参数,
注意名值对参数应当且只能写在最前面,所有参数请用逗号分隔。
如果指定了第 2 个参数或更多参数,则 kwarg 的数组成员被忽略。
如果参数 @1 不符合前述规则,
则与 call 调用相同的方式将所有参数作为调用时的匿名参数。
如果参数 @1 为 null,则忽略第一个参数并禁用命名参数。
并将第二个参数作为第一个参数,后续参数依次前移。
检测 Python 对象的类型,并自动返回对应的aardio类型对象。
基础的数值字符串布尔值转换为同类型,整数值即使大于 53 位仍转为浮点数。
dict, list, tuple 等等使用json格式转换为 aardio 类型的表
检测P ython 对象的类型,
基础类型返回对应的 aardio 类型对象,其他对象返回自身。
基础类型指:数值、布尔值、字符串、字节数组。
数值仅转换浮点数值,以及不大于 53位(bit)的整数值。
字节数组指 Python 中的 bytes,aardio 中的 buffer 对象。
所有 Python 返回的对象自动调用此函数转换基础类型。
写属性成员的值,也可以用成员操作符赋值。
修改指定索引的项,也可以用索引下标操作符 [] 赋值。
获取64位无符号长整数
返回 math.size64 对象
接管此对象的指针并盗用一次引用计数
原对象的内部指针被清空,并不再负责释放引用计数
steal references
解析为 aardio 布尔值
解析为 aardio 字节数组
如果 Python 对象是一个 dict,
返回绑定相同 Python 对象的 py3.dict 对象,
添加引用计数,对象销毁时负责释放引用计数,
否则将传入对象作为 Python 内置函数 dict 的参数并返回 py3.dict 对象,
失败返回null
如果 Python 对象是一个 list,
返回绑定相同 Python 对象的 py3.list 对象,
添加引用计数,对象销毁时负责释放引用计数,
否则将传入对象作为 Python 内置函数 list 的参数并返回 py3.list 对象,
失败返回null
解析为 aardio 数值
也可以直接将对象传入 tonumber 函数并转换为数值
Python 对象转换为 Python 字符串对象,
相当于调用 Python 中的 str 函数,
如果要返回 aardio 字符串可使用 toString 函数,
也可以调用 py3.str 函数创建 Python 字符串对象
Python 对象转换为 aardio 字符串
Python 字节数组(bytes)解析为aardio中的字节数组(buffer)
其他类型尝试调用 Python 中的 str 函数转换为 aardio 字符串,
也可以直接将对象作为参数传入 tostring 函数转换为字符串
如果 Python 对象是一个 tuple,
返回绑定相同 Python 对象的 py3.tuple 对象,
添加引用计数,对象销毁时负责释放引用计数,
否则将传入对象作为 Python 内置函数 tuple 的参数并返回 py3.tuple 对象,
失败返回null
返回类型名字