--- Objects/funcobject.c.dist 2013-09-22 22:02:30.000000000 +1000 +++ Objects/funcobject.c 2013-09-22 23:09:32.000000000 +1000 @@ -759,7 +759,12 @@ } if (type == NULL) type = (PyObject *)(Py_TYPE(obj)); - return PyMethod_New(cm->cm_callable, type); + if (Py_TYPE(cm->cm_callable)->tp_descr_get) { + return Py_TYPE(cm->cm_callable)->tp_descr_get(cm->cm_callable, + type, NULL); + } + else + return PyMethod_New(cm->cm_callable, type); } static int