【发布时间】:2020-02-28 16:42:22
【问题描述】:
假设我有这个结构:
typedef struct
{
PyObject_HEAD
Foo* myFoo;
} PyFoo;
假设Foo 是:
class Foo
{
public:
hello()
{
std::cout << "Hello\n";
}
};
我不想将类 Foo 重新制作为 python 模块,因为它代表了一个具有更多函数和变量的库中的类(但这与这个问题无关)。我从文档中并没有真正了解如何在 C/C++ 中使用参数创建 PyObject*,更不用说如何使用 C/C++ 指针作为参数来实现了。
我要离开这个指南:https://docs.python.org/3/extending/newtypes_tutorial.html
我确实有指南中的 dealloc、new 和 init 方法,但我没有尝试初始化和解除分配任何值,对象本身的实例除外。
这个问题类似于Build a PyObject* from a C function?,但我想传递一个对象指针而不是一个函数。我正在使用与Create an object using Python's C API 相同的方法来创建对象,但我不知道如何将 foo 的实例提供给 PyObject。
【问题讨论】:
标签: python c++ cpython python-c-api