Подсчет ссылок на аргументы функции модуля Python C - PullRequest
1 голос
/ 27 марта 2012

Когда у меня есть PyObject *, полученный из PyArg_ParseTuple, нужно ли мне обязательно Py_DECREF его вернуть, прежде чем я вернусь из функции?

Пример:

static PyObject * modulefunc(PyObject * self, PyObject * args) {
    PyObject * obj;
    if (!PyArg_ParseTuple(args, "O", &obj)) {
        return NULL;
    }

    if (!PyObject_TypeCheck(obj, expected_type_ptr)) {
        // Do I need to Py_DECREF(obj) here?
        PyErr_SetString(PyExc_TypeError, "First argument is not expected type.");
        return NULL;
    }

    // ... rest of function implementation.
}

1 Ответ

1 голос
/ 27 марта 2012

Нет. PyArg_ParseTuple дает вам заимствованную ссылку .

...