You are here:  Home » Python » 对象协议 – 抽象对象层(Python教程)(参考资料)

对象协议

PyObject * Py_NotImplemented
NotImplemented单例,用于表示对给定类型组合没有实现操作.
Py_RETURN_NOTIMPLEMENTED
正确处理返回Py_NotImplemented来自一个C函数(也就是说,增加NotImplemented的引用计数并返回它).
int PyObject_Print PyObject  *o,文件 *fp,int  flags
打印一个物品o,存档fp。错误时返回-1。flags参数用于启用某些打印选项。目前支持的唯一选择是Py_PRINT_RAW;如果给出,对象的str()写的不是repr().
int PyObject_HasAttr PyObject  *o,PyObject  *attr_name
返回1如果o具有属性attr_name,则0否则。这相当于Python表达式hasattr(o, attr_name)。这个功能成功了

注意调用__getattr__()__getattribute__()方法时出现的异常会被抑制。要获得错误报告,请使用PyObject_GetAttr()来代替

int PyObject_HasAttrString PyObject  *o,const char  *attr_name
如果1具有o属性,则返回attr_name,否则返回0。这相当于Python表达式hasattr(o, attr_name)。这个功能成功了

注意调用__getattr__()__getattribute__()方法并创建临时字符串对象时发生的异常会被抑制。要获得错误报告,请使用PyObject_GetAttrString() instead.

PyObject* PyObject_GetAttr PyObject  *o,PyObject  *attr_name
Return value: New reference.

检索一个名为的属性attr_name来自物体o。成功时返回attributevalue,失败时返回NULL。这相当于Pythonexpression o.attr_name.

PyObject * PyObject_GetAttrString PyObject  *o,const char  *attr_name
Return value: New reference.

从对象attr_name中检索名为o的属性。成功时返回attributevalue,失败时返回NULL。这相当于Pythonexpression o.attr_name.

PyObject * PyObject_GenericGetAttr PyObject  *o,PyObject  *name
Return value: New reference.

通用属性getter函数,用于放入类型对象的tp_getattro插槽。它在对象的MRO中的类的字典中查找描述符以及对象的__dict__(如果存在)中的属性。如实现描述符中所述,数据描述符优先于实例属性,而非数据描述符则不优先。否则,AttributeError被抬起来

int PyObject_SetAttr PyObject  *o,PyObject  *attr_name,PyObject  *v
将对象attr_name的名为o的属性值设置为值v。提出异常并在失败时返回-1;成功时返回0。这相当于Python语句o.attr_name = v.

如果vNULL,该属性被删除,但是这个特性是有利于使用PyObject_DelAttr().

int PyObject_SetAttrString PyObject  *o,const char  *attr_name,PyObject  *v
设置名为的属性的值attr_name,对象o,值为v。提出异常并在失败时返回-1;成功时返回0。这相当于Python语句o.attr_name = v.

如果vNULL,该属性被删除,但是这个特性是有利于使用PyObject_DelAttrString().

int PyObject_GenericSetAttr PyObject  *o,PyObject *name,PyObject  *value
通用属性setter和deleter函数,用于放入类型对象的tp_setattro插槽。它在对象的MRO中的类的字典中查找数据描述符,如果找到它,则在实例字典中设置或删除属性。否则,在对象的__dict__(如果有的话。。成功的话,0被退回,否则AttributeError被抬起来-1被退回.
int PyObject_DelAttr PyObject  *o,PyObject  *attr_name
删除名为attr_name的属性,用于对象o。失败时返回-1。这相当于Python语句del o.attr_name.
int PyObject_DelAttrString PyObject  *o,const char  *attr_name
删除名为attr_name的属性,对象为o。返回-1失败。这相当于Python语句del o.attr_name.
PyObject * PyObject_GenericGetDict PyObject  *o,void  *context
Return value: New reference.

__dict__描述符的getter的通用实现。如果需要,它会创建字典.

新版本3.3.

int PyObject_GenericSetDict PyObject  *o,void  *context
__dict__描述符的setter的通用实现。这个实现不允许删除字典.

新版本3.3.

PyObject* PyObject_RichCompare PyObject  *o1,PyObject  *o2,int  opid
Return value: New reference.

使用o1指定的操作比较o2opid的值,它必须是Py_LT, Py_LE, Py_EQ,Py_NE, Py_GTPy_GE中的一个,分别对应于<,<=, ==, !=, >>=。这相当于Python表达式o1 op o2,其中opopid对应的运算符。成功时返回比较的值,或者NULL失败时返回

PyObject_RichCompareBool PyObject  *o1,PyObject  *o2,int  opid
使用o1指定的操作比较o2opid的值是Py_LT, Py_LE, Py_EQ,Py_NE, Py_GT之一,或Py_GE,分别对应<,<=, ==, !=, >>=。错误时返回-1,如果结果为假,则返回01除此以外。这相当于thePython表达式o1 op o2,其中op是对应opid.

的运算符注意

如果o1o2是同一个对象,PyObject_RichCompareBool()总会返回1for Py_EQ0 for Py_NE.

PyObject * PyObject_Repr PyObject  *o
Return value: New reference.

计算对象o的字符串表示。返回成功时的字符串表示,NULL失败了。这相当于thePython表达式repr(o)。被打的叫repr()内置功能

版本3.4更改:此函数现在包含一个调试断言,以帮助确保它不会以静默方式丢弃活动异常.

PyObject* PyObject_ASCII PyObject  *o
Return value: New reference.

作为PyObject_Repr(),计算对象的字符串表示o,butescape PyObject_Repr()\x, \u返回的字符串中的非ASCII字符与\U逃脱。这会生成一个类似于在Python 2中由PyObject_Repr()返回的字符串。由ascii()内置函数调用.

 

PyObject* PyObject_Str PyObject  *o
Return value: New reference.

计算对象o的字符串表示。成功时返回stringrepresentation,失败时返回NULL。这相当于thePython表达式str(o)。由str()内置函数调用,因此,通过print()函数

更改版本3.4:此函数现在包含调试断言帮助确保它不会以静默方式丢弃活动异常.

PyObject* PyObject_Bytes PyObject  *o
Return value: New reference.

计算一个字节对象的表示o. NULL在失败时返回,并在成功时返回字节对象。这相当于Pythonexpression bytes(o),当o不是整数时。与bytes(o)不同,当o是一个整数而不是零初始化的字节对象时会引发TypeError

int PyObject_IsSubclassPyObject  *derived,PyObject  *cls
返回1如果班级derived相同或派生来自班级cls,否则返回0。如果出现错误,请返回-1.

如果cls是一个元组,将对cls中的每个条目进行检查。结果将是1当至少有一张支票退回时1,否则会是0.

如果cls有个 __subclasscheck__()方法,它将被调用以确定子类状态,如PEP 3119 。除此以外,derivedcls如果它是直接或间接的子类,即包含在cls.__mro__.

通常只有类对象,即的实例type或派生类,被视为类。但是,对象可以通过拥有__bases__属性(必须是基类的元组)来覆盖它.

int PyObject_IsInstance PyObject  *inst,PyObject  *cls
返回1如果inst是类cls的实例或cls的子类,或0 如果不。出错,返回-1并设置异常.

如果cls是一个元组,将对cls。结果将是1当至少有一张支票退回时1,否则会是0.

如果cls有个 __instancecheck__()方法,它将被调用以确定子类状态,如PEP 3119 。除此以外, instcls如果它的类是cls.

一个实例inst可以通过__class__属性。

一个东西 cls如果它被认为是一个类,它可以覆盖它的基类是什么,有一个__bases__属性(必须是基类的元组).

int PyCallable_Check PyObject  *o
确定对象是否o可以调用。如果对象可以调用1则返回0除此以外。这个函数总是成功的.
PyObject* PyObject_Call PyObject  *callable,PyObject  *args,PyObject  *kwargs
Return value: New reference.

使用thepuple callable给出的参数调用一个可调用的Python对象args和字典给出的命名参数kwargs.

args必须不 NULL如果不需要参数,则使用空元组。如果不需要命名参数,kwargs可以NULL.

返回成功调用的结果,或NULL失败.

这相当于Python的表达式:callable(*args, **kwargs).

PyObject * PyObject_CallObject PyObject  *callable,PyObject  *args
Return value: New reference.

使用thetuple callable给出的参数调用一个可调用的Python对象args。如果不需要参数,则args可以NULL.

返回成功调用的结果,或NULL失败时

这是等价的Python表达式:callable(*args).

PyObject * PyObject_CallFunction PyObject  *callable,const char  *format, …
Return value: New reference.

一个可调用的Python对象callable,带有可变数量的C参数。使用Py_BuildValue()样式格式字符串描述C参数。格式可以是NULL,表示没有提供参数.

返回成功调用的结果,或者NULL失败时

这个相当于Python表达式:callable(*args).

请注意,如果你只传递PyObject * args,PyObject_CallFunctionObjArgs()是一个更快的选择.

版本3.4更改:的类型format从改变了char *.

PyObject * PyObject_CallMethodPyObject  *obj,const char  *name,const char  *format, …
Return value: New reference.

调用对象name的方法obj具有可变数量的Carguments。C参数用Py_BuildValue()应该产生元组的格式字符串.

格式可以是NULL,表示没有提供参数.

返回成功调用的结果,或NULL失败了

这相当于Python表达式:obj.name(arg1, arg2, ...).

请注意,如果你只传递PyObject * args,PyObject_CallMethodObjArgs()是一个更快的替代品.

更改版本3.4: nameformat改变了char *.

PyObject * PyObject_CallFunctionObjArgs PyObject  *callable,…,NULL
Return value: New reference.

调用一个可调用的Python对象callable,其变量为PyObject*参数。参数提供为变量numberof参数后跟NULL.

返回成功调用的结果,或NULL失败时

这相当于Python表达式:callable(arg1, arg2, ...).

PyObject * PyObject_CallMethodObjArgs PyObject  *obj,PyObject  *name,…,NULL
Return value: New reference.

调用Python对象的方法obj,其中方法的名称作为aPython字符串对象给出name。它使用可变数量的PyObject*参数调用。参数以可变数量的参数提供,后跟NULL。返回成功调用的结果,或NULL失败时

Py_hash_t PyObject_Hash PyObject  *o

计算并返回对象的哈希值o。失败时,返回-1。这相当于Python表达式hash(o).

在版本3.2中更改:返回类型现在是Py_hash_t。这是一个有条件的整数,大小与Py_ssize_t.

Py_hash_t PyObject_HashNotImplemented PyObject  *o
设置一个TypeError表示type(o)不可清洗并返回-1。此功能在存放于tp_hashslot,允许一个类型明确地向解释器指出它是不可用的.
int PyObject_IsTrue PyObject  *o
如果对象1被认为是真的,则返回o,否则返回0。这相当于Python表达式not not o。失败时,返回-1.
int PyObject_Not PyObject  *o
返回0如果对象o被认为是真的,而1则是。这相当于Python表达式not o。失败时,返回-1.
PyObject * PyObject_Type PyObject  *o
Return value: New reference.

o为非NULL,返回对象类型对象o对应的类型对​​象。失败时,抬起SystemError并返回NULL。这相当于Python表达式type(o)。此函数增加返回值的参考计数。没有理由使用这个函数而不是常用的表达式o->ob_type,它返回类型为PyTypeObject*的指针,除非需要递增的引用计数.

intPyObject_TypeCheck PyObject  *o,PyTypeObject  *type
如果对象otype或的子类型type。两个参数必须是非 – NULL.
Py_ssize_t PyObject_Size的PyObject  *o
Py_ssize_t PyObject_Length的PyObject  *o

返回对象的长度o。如果对象o提供序列和映射协议,则返回序列长度。出错,-1isreturned。这相当于Python表达式len(o).

Py_ssize_t PyObject_LengthHint PyObject  *o,Py_ssize_t  default
返回对象的估计长度o。首先尝试返回其实际长度,然后使用__length_hint__()进行估算,并最终返回默认值。错误返回时-1。这与Python表达式的等价operator.length_hint(o, default).

版本3.4.

PyObject* PyObject_GetItem PyObject  *o,PyObject  *key
Return value: New reference.

返回元素o对应的对象keyNULL失败。这相当于Python表达式o[key].

int PyObject_SetItemPyObject  *o,PyObject  *key,PyObject  *v
将对象key映射到值v。提出异常并在失败时返回-1;成功时返回0。这是Python语句的等价o[key] = v.
int PyObject_DelItem PyObject  *o,PyObject  *key
删除从对象key到对象o的映射。失败时返回-1。这相当于Python语句del o[key].
PyObject * PyObject_Dir PyObject  *o
Return value: New reference.

这相当于Python表达式dir(o),返回一个(可能是空的)适合于object参数的字符串列表,如果有错误则返回NULL。如果参数是NULL,这就像Python dir(),返回当前本地人的名字;在这种情况下,如果没有执行帧处于活动状态,则返回NULL但是PyErr_Occurred()将返回false.

PyObject* PyObject_GetIterPyObject  *o
Return value: New reference.

这相当于Python表达式iter(o)。它返回object参数的newiterator,如果对象已经是迭代器,则返回对象本身。如果物体不能被诱惑,则举起TypeError然后返回NULL.

评论被关闭。