编程语言
首页 > 编程语言> > 使用Python C-API具有元组参数的__getitem__方法

使用Python C-API具有元组参数的__getitem__方法

作者:互联网

是否可以使用python C-API使用__getitem__定义一个带有元组参数的类?
PyTypeObject的tp_as_sequence成员的sq_item成员
必须是ssizeargfunc,所以我看不到该怎么做.
(但我认为NumPy ndarray可以做到这一点.)

解决方法:

是的,请改用tp_as_mapping.

它的mp_subscript带有一个PyObject *,因此您可以将任何东西用作索引/键.

要了解它们之间的关系,您可以查看PyObject_GetItem()的源代码(如文档所述),该源代码等效于Python o [key]表达式.您将看到它首先尝试tp_as_mapping,如果不存在并且键为int,它将尝试tp_as_sequence.

标签:python-c-api,python
来源: https://codeday.me/bug/20191101/1983719.html