Печать на python класса C++ с использованием pybind11
Допустим, у кого-то есть такой класс
class Data
{
public:
Data(double d): value_(d) {};
private:
double value_;
};
Можно ли экспортировать его в Python с pybind11, что
d = Data(3.14)
print(d)
отображает 3.14 вместо чего-то вроде
Объект данных в 0x7fed8a8c3298
1 ответ
Решение
Вы можете сделать что-то вроде этого при экспорте:
class_<Data>("Data", module)
.def("__repr__", [](const Data& d){ return std::to_string(d.getValue()); });
Обратите внимание, что я добавил, что getValue
метод с value_
это личное. Хотя в зависимости от вашего интерфейса, возможно, имеет смысл добавить что-то вроде Data::toString()
вместо.