0

私はVectorC で Python 拡張モジュールとして簡単な実装を書いています。これはほとんど次のようになります。

typedef struct {
    PyObject_HEAD
    double x;
    double y;
} Vector;

static PyTypeObject Vector_Type = {
    ...
};

VectorPython から呼び出す whileのインスタンスを作成するのは非常に簡単ですがVector、同じ拡張モジュールでインスタンスを作成する必要があります。ドキュメントを調べましたが、明確な答えが見つかりませんでした。これを行う最善の方法は何ですか?

4

1 に答える 1

3

最も簡単なのは、たとえばPyObject_CallFunctionを使用して、作成した型オブジェクトを呼び出すことです。名前にだまされてはいけません。関数だけでなく、任意の呼び出し可能オブジェクトを呼び出すことができます。

C モジュールのグローバルとして便利に利用できる型オブジェクトへの参照がない場合はstatic、もちろん、さまざまな方法で取得できます (たとえば、モジュール オブジェクトからPyObject_GetAttrStringを使用するなど)。PyObject*しかし、それをモジュール レベルの C 変数に貼り付けることstaticは、おそらく最も簡単で便利です。

于 2010-04-03T23:43:08.023 に答える