私はC++クラスをPythonにバインドしていて、以前の問題に対する興味深い解決策に到達しました。残念ながら、これは別の質問につながり、簡単な答えもないようです。
各関数を「呼び出し可能な」PyObjectにラップしています。呼び出し可能にするのは、呼び出し関数を定義することです(C側ではこれはPyTypeObjectのtp_callメソッドです)。
tp_callは、引数リストとして(PyObject *、PyObject *、PyObject *)を受け入れるだけの三項関数を使用しているようです。
ここで問題となるのは、この関数が引数(PyObject * self、PyObject * args)を受け取るPyCFunctionの代わりになる必要があるということです。Python側ではこれを簡単に行うことができますが、C側では、バイナリ関数が必要なときに三項関数が必要になるようです。呼び出し可能な関数を単純にするために、PyCFunctionポインターを使用するか、それをカプセル化する方法はありますか?