3
是否可以使用Python C-API定義帶__getitem__
的類,該參數需要使用tuple
參數? tp_as_sequence
成員PyTypeObject
的成員必須是ssizeargfunc
,所以我不知道該怎麼做。 (但我假設NumPy ndarray
這樣做。)帶有使用Python的元組參數的__getitem__方法C-API
是否可以使用Python C-API定義帶__getitem__
的類,該參數需要使用tuple
參數? tp_as_sequence
成員PyTypeObject
的成員必須是ssizeargfunc
,所以我不知道該怎麼做。 (但我假設NumPy ndarray
這樣做。)帶有使用Python的元組參數的__getitem__方法C-API
是的,請使用tp_as_mapping
來代替。
它的mp_subscript
需要PyObject *
,所以你可以使用任何東西作爲索引/鍵。
爲了理解它們之間的關係,你可以看一下PyObject_GetItem()
的來源,其中(如文檔所述)等效於Python o[key]
表達式。你會看到它首先嚐試tp_as_mapping
,如果那不是,那麼鍵是int
,它會嘗試tp_as_sequence
。