我有一个以对象作为参数的C函数:
void fct(struct Objet * obj1) {
....
}
我想在Python中使用这个函数。我试图解析这个论点,但找不到方法。在Python中:
static PyObject* NameMod_fct(PyObject* self, PyObject* args) {
PyObject * Obj;
if (!PyArg_ParseTuple(args, "O!", **&...**, &Obj)) { // what should I put as &Py_Type?
return NULL;
}
...
}
答案 0 :(得分:1)
每个Python对象都有一个对其类型的引用:对于pPyObj
(类型为PyObject*
),可以使用pPyObj->ob_type
访问它。
这应该指向PyTypeObject
的实例。
此时,答案很大程度上取决于resp的位置。 PyTypeObject
是"构建"。
Objet
是一个用C 就是这种情况,我感到有宾至如归的感觉。 (因为我完全通过在C / C ++中编写扩展来获得我对Python的了解)。应该/必须存在static
PyTypeObject
实例,它最初在Python中注册。只需获取并传递其地址。
Objet
是非C库的对象PyTypeObject
个实例。这可能可以通过检索resp来完成。 Python的词典。由于我没有这方面的经验,所以我不能详细说明。
我想一个好的开始就是(重新)搜索PyModule_GetDict()
和PyImport_Import()
。
Objet
是内置类型Python的对象最后但并非最不重要 - 这是一个微不足道的案例。在这种情况下,我不会使用O
,因为内置类型还有很多其他指示符。