Python C API:如何在不知道其类型的情况下将任何 Python 对象存储为 void*?

Python C API: How to store any Python Object as a void* without knowing its type?

我想知道是否可以将 任何 Python 对象 作为 void* 存储在 Python C API 中,这将是稍后返回 python 原样。

我试过这样做:

store_python_object(PyObject *self, PyObject *args)
{
    int retval;
    PyObject *self_capsule;
    void *stored_object;
    /* Parse input arguments */
    retval = PyArg_ParseTuple(args,
                              "OO:store_python_object",
                              &self_capsule,
                              &stored_object);
    if (!retval) {
        return NULL;
    }
    // More code here...
    // Return stored_object to python as-is
}

但这在存储 int 时似乎有一个奇怪的行为(同样,我想存储任何 Python 对象,而不仅仅是 int)。

找到我的问题:
我在 C 中存储了一个 python-object 而没有增加它的引用计数器(使用 Py_INCREF(PyObject *o))。显然 python 释放了 python 对象,这导致了奇怪的行为。

谢谢大家。