如何在运行时在Boost::Python中创建类?

2024-06-17 15:08:48 发布

您现在位置:Python中文网/ 问答频道 /正文

在模块源代码中,要创建新类,我必须使用下一个声明性样式构造:

class_<MyClass>("MyClass")
    .def("my_method", &MyClass::my_method)
    .def("my_second_method", &MyClass::my_second_method);

但是如果我需要在运行时创建类呢?例如模块函数将返回新类。我该怎么办?在

事实上,我需要动态地创建新类型。在我的例子中,这个类型修复了dictonaries和类型化数组。我需要这个来优化我现有的代码:开销问题。在我的项目中,使用了通过网络传输的数据类型。这是在运行时创建固定的DICT类的原因(每个类都将存储具有指定名称的单个字段,如C++中的结构,它是^ {< CD1})和类型化数组,其中包含元素类型和数组类型的数据。在

在python代码中如下所示:

^{pr2}$

我想如果我用Python::Boost或/Python API创建C++的特性,那么我将用我的类型获得最大的加速。 我的问题是在运行时创建新的类(通过其他函数,例如this DeclareFixedDictonaryDeclareTypedArray)。在

按照文档使用Boost声明新的python类,我必须执行以下操作:

^{3}$

但是这是module类,它们只能在我的模块中创建,而且我不能在另一个模块函数中使用class_,这会导致错误。也许Boost有在运行时创建新类的API?可能是type实例和动态填充属性。或者最好的方法是生成代码?但比Python中的反射系统更难。在


Tags: 模块函数代码声明类型mydefmyclass