使用Python C-API使用tuple参数的__getitem__方法

时间:2012-04-14 07:16:47

标签: python python-c-api

是否可以使用Python C-API定义一个带有__getitem__参数的tuple的类? sq_item成员的tp_as_sequence成员PyTypeObject成员 必须是ssizeargfunc,所以我不知道该怎么做。 (但我假设NumPy ndarray做到了。)

1 个答案:

答案 0 :(得分:4)

是的,请改用tp_as_mapping

mp_subscript需要PyObject *,因此您可以将任何内容用作索引/键。

要了解它们之间的关系,您可以查看PyObject_GetItem()的来源(正如文档所述)与Python o[key]表达式相当。您会看到它首先尝试tp_as_mapping,如果不存在且密钥为int,则会尝试tp_as_sequence