gpt4 book ai didi

python - 使用 PyArg_ParseTuple 解析用户定义的类型

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:40 24 4
gpt4 key购买 nike

如何使用 PyArg_ParseTuple 解析用户定义的类型(或来自现有非标准库的类型)?

最佳答案

不像 Martijn 建议的那样使用普通的 O 格式,我通常更喜欢使用 O& format .它允许您传递一个函数,该函数将被调用以将任何 PyObject* 转换为任意 C( double )指针。下面是一些示例用法,其中我将传递的值转换为指向我自己的对象类型的指针:

/** 
* This method should return 0 if it does not work or 1 in case it does
* PyArg_*() functions will handle the rest from there or let your program
* continue in case things are fine.
*/
int MyConverter(PyObject* o, MyOwnType** mine) {
//write the converter here.
}

然后,在您需要解析对象的时候:

/**
* Simple example
*/
static PyObject* py_do_something(PyObject*, PyObject* args, PyObject* kwds) {

/* Parses input arguments in a single shot */
static char* kwlist[] = {"o", 0};

MyOwnType* obj = 0; ///< if things go OK, obj will be there after the next call

if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&", kwlist, &MyConverter, &obj))
return 0; ///< we have failed, let Python check exceptions.

/* if you get to this point, your converter worked, just use */
/* your newly allocated object and free it, when done. */

}

这种方法的优点是您可以将 MyConverter 封装在 C-API 上,然后在其他函数中重复使用它来完成相同的工作。

关于python - 使用 PyArg_ParseTuple 解析用户定义的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19282054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com