私は Python C API を使用しており、いくつかの C++ クラスで使用する PyTypeObjects の新しいインスタンスを割り当てる関数を作成しようとしています。アイデアは、各クラスが、このファクトリでインスタンス化される PyTypeObject へのポインタを持つことです。ポインターは静的でなければなりません。ただし、このアプローチには問題があります。
- PyTypeObject へのポインタを含むクラスで、その静的変数をファクトリ関数 (別のクラスにありますが静的) の結果と等しくなるように設定しようとすると、「undefined reference」リンカ エラーが発生します。関数は実行時まで発生しないため、これは理にかなっていると思いますが、これを行う別の方法がわかりません。
- 最初のフィールドは常にマクロである PyObject_VAR_HEAD であるため、PyTypeObject フィールドを動的に設定する方法がわかりません。
これが理にかなっていることを願っています。基本的に、いくつかのクラスが PyTypeObject を静的に再定義する必要がなく、代わりにファクトリ関数から PyTypeObject 変数をインスタンス化できるようにしようとしています。