使用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