无缝替换虚拟C+的系统+;用python代码重写 游戏中,我希望能够用Python函数重写特定的C++函数,尽可能无缝。其想法是允许使用解释语言对某些功能进行快速编码,以进行原型设计/建模等

无缝替换虚拟C+的系统+;用python代码重写 游戏中,我希望能够用Python函数重写特定的C++函数,尽可能无缝。其想法是允许使用解释语言对某些功能进行快速编码,以进行原型设计/建模等,python,c++,Python,C++,理想情况下,我希望有一个这样的结构: 对于这样广泛的内容,我将研究嵌入式Python的BooSo:您应该能够使用 IndiLIP加载并重新加载Python模块。这是否意味着TyeC++代码的导出和Python代码的Th导入都需要通过Boost完成?或者我可以用它半个吗?实际上,你可以在C++中嵌入Python。或者你可以将C++导出到Python。Boost在它所能做的方面是非常可变的,所以如果你只想从C++调用动态Python代码,你可以这么做。或者,您可以将C++类暴露给Python,然后使

理想情况下,我希望有一个这样的结构:

<我的C++源代码:

class WorldActions
{
public:

    //example of a method with a default implementation:

    virtual Coordinates respawnLocation(int event) const
    {
        if(event == 0)
            return Coordinates(0,0);
        else
            return Coordinates(1,0);
    }
}
在python文件中:

def respawnLocationOverride(worldActionInstance, event):
    coords = Coordinates()
    coords.x = 1
    return coords

在C++引擎中的某个点,我动态加载Python方法“ReavaNosiaOffice”,它将有效地取代WorkStase: 这可以通过一个特殊的派生类来实现,如下所示:

class WorldActionsFromPy : public WorldActions
{
public:
    virtual Coordinates respawnLocation(int event) const
    {
        if(_something == NULL)
        {
         return WorldActions::respawnLocation(event);
        }
        else
        {
        return _something->callPythonMethod("respawnLocationOverride", this, event);
        }
    }
}
你会推荐什么样的架构让我能够尽可能简单地做到这一点?我知道我可以使用SWIG来生成所有的Python类,但是我不知道如何才能将.py.file中的python代码重新导入C++代码

中。
谢谢

>对于这样广泛的内容,我将研究嵌入式Python的BooSo:您应该能够使用<代码> IndiLIP加载并重新加载Python模块。这是否意味着TyeC++代码的导出和Python代码的Th导入都需要通过Boost完成?或者我可以用它半个吗?实际上,你可以在C++中嵌入Python。或者你可以将C++导出到Python。Boost在它所能做的方面是非常可变的,所以如果你只想从C++调用动态Python代码,你可以这么做。或者,您可以将C++类暴露给Python,然后使用Python调用它们来重新加载给定的模块。在这种情况下,您显然希望用一个嵌入的Python代码来覆盖给定的函数,以便快速原型化,因此最好的教程可能在这里:如果这看起来是有生产力的,我可以在下面写一个较长的答案。嗨!感谢您的帮助,我成功地使用swig创建了一个.pyd模块,该模块用Python封装了我现有的类,因此它在Python中运行良好,我可以编写自定义Python函数。现在我如何在Python中“导入”这些函数,例如将我的“坐标”C++实例转换成“坐标”Python对象?谢谢