【发布时间】:2011-05-31 16:26:59
【问题描述】:
我想添加一个构造函数,这样我就可以做到这一点(我的字节在字符串中,因为我使用的是 python 2.6 和 2.7):
import myboostpymodule
d = 'serialised representation of a vector of some c++ objects'
vec = myboostpymodule.MyVectorType(d)
我重载了向量构造函数以接受一个字符串,该字符串将包含序列化的数据,而 MyVectorType 以boost::python::vector_indexing_suite 公开:
namespace bp = boost::python;
bp::class_< std::vector<SomeType> >("MyVectorType")
.def(bp::vector_indexing_suite< std::vector<SomeType> >());
- 是否可以不包装(通过子类化和 boost::python::wrapper<...>)向量来添加构造函数?
- 我可以告诉 boost python 使用静态方法(或普通函数)作为构造函数吗?
重要的是我可以使用构造函数(而不是其他函数)从 python 创建向量。
我实际上这样做是因为我想让我的向量的 python 实例可腌制,并且我所有的 c++ 类型都已经具有明确定义的序列化(包括std::vector<...>),所以使用它来腌制整个向量似乎是明智的一次,而不是允许 python 独立地腌制每个元素1。
1而且它似乎可能是一个更高性能的解决方案
【问题讨论】:
标签: boost-python