मैं अजगर, https://docs.python.org/2/extending/newtypes.html, में 'नए प्रकार' को परिभाषित करने के लिए ट्यूटोरियल के माध्यम से जा रहा था और मैं कोड के इस टुकड़े में Py_DECREF का उपयोग करने का उद्देश्य समझ में नहीं आया।Py_DECREF और PY_INCREF का उद्देश्य क्या है?
static PyObject *
Noddy_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
Noddy *self;
self = (Noddy *)type->tp_alloc(type, 0);
if (self != NULL) {
self->first = PyString_FromString("");
if (self->first == NULL)
{
Py_DECREF(self);
return NULL;
}
self->last = PyString_FromString("");
if (self->last == NULL)
{
Py_DECREF(self);
return NULL;
}
self->number = 0;
}
return (PyObject *)self;
}
संदर्भ गणना की मेरी समझ कमजोर है और किसी भी मदद की सराहना की जाएगी।
मुझे नहीं पता कि यह कोड भ्रमित कैसे हो सकता है। आपने अभी एक ऑब्जेक्ट ('self') बनाया है, और' Py_DECREF' को स्ट्रिंग बनाने के दौरान कुछ ऐसा करने के मामले में इसे रद्द करने के लिए कहा जाता है ... इसके बारे में क्या स्पष्ट नहीं है? – Bakuriu