在C ++类中调用Python代码来操作Object

时间:2016-07-15 15:34:51

标签: python c++ embed

我目前正在使用pybind11将python嵌入到我的程序中。 我调用update()函数,其中我想在从某个类创建的所有对象(数百个对象)上运行python代码。问题是,我需要将指向调用python代码的对象(this)的指针移交给python。

所以基本上我有一个这样的类(最小伪C ++代码):

class A
{
public:
    A(Data* d)
    {
        dat = d;
        createPyObject(passToPython);
    }

    void update()
    {
        launchPythonCode(passToPython);
    }

    Data* getData(){return dat;}
    static void createPythonClassDef()
    {
        pybind11::class_<A>(module, "A")
        .def("getData",&A::getData);
    }

private:

    void createPyObject(PyObject* p)
    {
        //HowTo?
    }

    Data* dat;
    PyObject* passToPython;
};

我尝试了什么: 添加一个函数,返回指向类的指针,并创建一个Python localdictionary,其中包含一个指向该函数的函数getA()。因此每个Object都包含自己的localdictionary,getA()函数返回其指针。 这应该给Python提供了对象,但它不起作用。

我希望有人可以告诉我如何为此目的正确嵌入python。

0 个答案:

没有答案