Я хотел бы добавить конструктор, чтобы я мог это сделать (мои байты в строках, потому что я использую 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<...>
), поэтому представляется целесообразным использовать это для выбора целых векторов в один раз, вместо того, чтобы позволить питону независимо выбирать каждый элемент 1 .
1 и, скорее всего, это будет высокопроизводительное решение