题
我写一个简单的Vector
实现在C Python扩展模块,看起来大多是这样的:
typedef struct {
PyObject_HEAD
double x;
double y;
} Vector;
static PyTypeObject Vector_Type = {
...
};
这是在从Python中调用创建Vector
的情况很简单,但我需要相同的扩展模块中创建一个Vector
实例。我看着在文档中,但我无法找到一个明确的答案。什么是做到这一点?
解决方案
最简单的是调用自己创建的类型的对象,例如与 PyObject_CallFunction - 不要让名字骗了,它让你调用的任何的调用,请不可以只是一个函数。
如果你没有方便可行的全球到C模块static
你的类型对象的引用,您可以通过多种方式检索,当然(的例如,从具有的 PyObject_GetAttrString )。但其粘附到PyObject*
一个static
模块级C变量可能是最简单和最方便的。
不隶属于 StackOverflow