Object Protocol

从对象* o 检索名为 attr_name 的属性。成功返回属性值,失败则返回 NULL *。这等效于 Python 表达式o.attr_name

从对象* o 检索名为 attr_name 的属性。成功返回属性值,失败则返回 NULL *。这等效于 Python 表达式o.attr_name

如果* v NULL *,则会删除该属性,但是不建议使用此Function,而推荐使用PyObject_DelAttr()

如果* v NULL *,则会删除该属性,但是不建议使用此Function,而推荐使用PyObject_DelAttrString()

使用* opid 指定的操作比较 o1 o2 的值,该操作必须是Py_LTPy_LEPy_EQPy_NEPy_GTPy_GE之一,与<<===!=>对应或>=。这等效于 Python 表达式o1 op o2,其中op是与 opid 对应的运算符。如果成功,则返回比较的值;如果失败,则返回 NULL *。

Note

如果* o1 o2 *是同Pair象,则PyObject_RichCompareBool()将始终为Py_EQ返回1,对于Py_NE返回0

计算对象* o 的字符串表示形式。如果成功,则返回字符串表示形式;如果失败,则返回 NULL *。这等效于 Python 表达式repr(o)。由repr()内置函数和反引号调用。

计算对象* o 的字符串表示形式。如果成功,则返回字符串表示形式;如果失败,则返回 NULL *。这等效于 Python 表达式str(o)。由str()内置函数和print语句调用。

计算对象* o 的 Unicode 字符串表示形式。成功返回 Unicode 字符串表示,失败返回 NULL *。这等效于 Python 表达式unicode(o)。由unicode()内置函数调用。

2.1 版中的新Function。

在版本 2.2 中进行了更改:添加了第二个参数,支持 Tuples。

子类确定是pass一种相当直接的方式完成的,但它包括皱纹,扩展类的实现者可能希望意识到。如果AB是类对象,则BA的子类,如果它直接或间接地从A继承。如果其中一个不是类对象,则使用更通用的机制来确定两个对象的类关系。测试* B 是否为 A 的子类时,如果 A B ,则PyObject_IsSubclass()返回 true。如果 A B 是不同的对象,则以深度优先的方式为 A 搜索 B *的bases属性-认为bases属性足以进行此确定。

2.1 版中的新Function。

在版本 2.3 中进行了更改:较旧的 Python 版本不支持将 Tuples 作为第二个参数。

调用可调用的 Python 对象* callable_object ,其参数由 Tuples args 给出,命名参数由字典 kw 给出。如果不需要命名参数,则 kw 可以为 NULL *。 * args 不能为 NULL ,如果不需要参数,请使用一个空的 Tuples。如果成功,则返回调用结果;如果失败,则返回 NULL *。这等效于 Python 表达式apply(callable_object, args, kw)callable_object(*args, **kw)

2.2 版中的新Function。

用 Tuples* args 给出的参数调用可调用的 Python 对象 callable_object 。如果不需要参数,则 args 可以为 NULL 。如果成功,则返回调用结果;如果失败,则返回 NULL *。这等效于 Python 表达式apply(callable_object, args)callable_object(*args)

使用可变数量的 C 参数调用可调用的 Python 对象* callable 。使用Py_BuildValue()样式格式字符串描述 C 参数。格式可以为 NULL ,表示未提供任何参数。如果成功,则返回调用结果;如果失败,则返回 NULL *。这等效于 Python 表达式apply(callable, args)callable(*args)。请注意,如果仅传递PyObject * args,则PyObject_CallFunctionObjArgs()是更快的选择。

用可变数量的 C 参数调用对象* o 的名为 method 的方法。 C 参数由Py_BuildValue()格式的字符串描述,该字符串应产生一个 Tuples。格式可以为 NULL ,表示未提供任何参数。如果成功,则返回调用结果;如果失败,则返回 NULL *。这等效于 Python 表达式o.method(args)。请注意,如果仅传递PyObject * args,则PyObject_CallMethodObjArgs()是更快的选择。

调用可变数量的PyObject*参数的可调用 Python 对象* callable 。提供的参数是可变数量的参数,后跟 NULL 。如果成功,则返回调用结果;如果失败,则返回 NULL *。

2.2 版中的新Function。

调用对象* o 的方法,该方法的名称在 name 中作为 Python 字符串对象给出。使用可变数量的PyObject*参数来调用它。提供的参数是可变数量的参数,后跟 NULL 。如果成功,则返回调用结果;如果失败,则返回 NULL *。

2.2 版中的新Function。

2.6 版的新Function。

当* o 为非 NULL 时,返回与对象 o 的对象类型相对应的类型对象。失败时,引发SystemError并返回 NULL *。这等效于 Python 表达式type(o)。此函数增加返回值的参考计数。确实没有理由使用该函数代替通用表达式o->ob_type,该表达式返回类型为PyTypeObject*的指针,除非需要增加引用计数。

2.2 版中的新Function。

在版本 2.5 中进行了更改:这些函数返回了int类型。这可能需要更改您的代码以正确支持 64 位系统。

返回* o 的元素,失败时对应于对象 key NULL *。这等效于 Python 表达式o[key]

这等效于 Python 表达式dir(o),返回适合于对象参数的字符串列表(可能为空),如果有错误,则返回* NULL 。如果参数为 NULL ,则类似于 Python dir(),返回当前本地名称。在这种情况下,如果没有执行框架处于活动状态,则返回 NULL *,但是PyErr_Occurred()将返回 false。

这等效于 Python 表达式iter(o)。它为对象参数返回一个新的迭代器,如果对象已经是一个迭代器,则返回对象本身。如果不能迭代该对象,则引发TypeError并返回* NULL *。

首页