CPython如何创建方法属性并将其添加到带有dict的对象?

2024-09-30 01:26:45 发布

您现在位置:Python中文网/ 问答频道 /正文

这可能是个棘手的问题。。。你知道吗

简而言之,我创建并添加了一个方法,如下所示:

static PyObject *ret_arg(PyBVHTree *self, PyObject *arg)
{
    /* just to demonstrate */
    return arg;
}
static PyMethodDef my_meth = {"ret_arg", (PyCFunction)ret_arg, METH_O, 0};       

...
    PyObject* func = PyCFunction_New(&my_meth, my_object);
    Py_DECREF(my_object);
    PyObject_SetAttrString(my_object, "ret_arg", func);
    Py_DECREF(func);
    return my_object;
}

真管用!但有一些问题:(

例如:

  • 如果我删除我的对象。并使用新方法,CRASH。你知道吗
  • 当我用python关闭程序时。错误:异常\访问\冲突。这和refcount没有问题

所以我的问题是:

正确的方法是什么?你知道吗


Tags: 方法pyreturnobjectmyargstaticpyobject

热门问题