Можно ли определить класс с __getitem__
, который принимает аргумент tuple
, используя Python C-API? Член sq_item
члена tp_as_sequence
члена PyTypeObject
должен быть ssizeargfunc
, поэтому я не понимаю, как это сделать. (Но я предполагаю, что NumPy ndarray
делает это.)
Метод __getitem__ с аргументом кортежа с использованием Python C-API
Ответы (1)
Да, используйте вместо этого tp_as_mapping
.
Его mp_subscript
принимает PyObject *
, поэтому вы можете использовать что угодно в качестве индекса/ключа.
Чтобы понять, как они связаны, вы можете взглянуть на источник PyObject_GetItem()
, который (как говорится в документе) является эквивалентом выражения Python o[key]
. Вы увидите, что он сначала пытается tp_as_mapping
, а если его нет и ключ int
, он пытается tp_as_sequence
.
person
yak
schedule
14.04.2012