0

我正在编写一个简单的Vector实现作为 C 中的 Python 扩展模块,它看起来大多像这样:

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

static PyTypeObject Vector_Type = {
    ...
};

从 Python 调用时创建实例非常简单Vector,但我需要Vector在同一个扩展模块中创建一个实例。我查看了文档,但找不到明确的答案。最好的方法是什么?

4

1 回答 1

3

最简单的方法是调用您创建的类型对象,例如使用PyObject_CallFunction - 不要让名称欺骗您,它可以让您调用任何可调用对象,不仅仅是函数。

如果您没有对您的类型对象的引用,可以方便地用作staticC 模块的全局对象,那么您当然可以通过各种方式检索它(例如,使用PyObject_GetAttrString从您的模块对象中检索)。但是将其粘贴PyObject*static模块级 C 变量中可能是最简单和最方便的。

于 2010-04-03T23:43:08.023 回答