We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 8c33c61 commit 7e5327eCopy full SHA for 7e5327e
Objects/abstract.c
@@ -201,6 +201,20 @@ PyObject_GetItem(PyObject *o, PyObject *key)
201
((PyTypeObject *)o)->tp_name);
202
return NULL;
203
}
204
+
205
+ // Try attribute-based fallback: obj.__getitem__(key)
206
+ PyObject *attr_getitem = PyObject_GetAttr(o, &_Py_ID(__getitem__));
207
+ if (attr_getitem != NULL) {
208
+ if (PyCallable_Check(attr_getitem)) {
209
+ PyObject *res = PyObject_CallOneArg(attr_getitem, key);
210
+ Py_DECREF(attr_getitem);
211
+ return res;
212
+ }
213
214
215
+ else {
216
+ PyErr_Clear();
217
218
219
return type_error("'%.200s' object is not subscriptable", o);
220
0 commit comments