我正在将C++类绑定到Python,并为之前的一个问题找到了一个有趣的解决方案,不幸的是,这导致了另一个似乎也没有简单答案的问题
我将每个函数封装到一个"可调用"PyObject中,使其可调用的是定义调用函数(C端,这是PyTypeObject中的tp_call方法)
tp_call似乎采用了一个只接受(PyObject*、PyObject*和PyObject*)作为参数列表的三元函数
现在的问题是,我需要这个函数来代替PyCFunction,它只接受参数(PyObject*self,PyObject*args)。现在python方面可以很容易地做到这一点,但C方面似乎需要三元函数,当我只想要一个二进制函数时,那么,是否有任何方法可以使可调用函数变得简单——采用PyCFunction指针或将其封装为这样的方法?
第三个PyObject*
是kwargs。写一个包装,只是。。。没有通过。如果TypeError
包含任何内容,则引发它是可选的。