There's actually a problem with this signature: `NULL` return value is used both for detecting if there is an override and for error return. So it needs an extra argument `PyObject **result` and the return type should be changed to `int` with `0` for successful return and `1` if error is raised.