假设一个人有这样的课程
class Data
{
public:
Data(double d): value_(d) {};
private:
double value_;
};
是否可以使用 pybind11 在 Python 中导出它,这样
d = Data(3.14)
print(d)
显示 3.14 而不是类似
0x7fed8a8c3298 处的数据对象
导出时可以执行以下操作:
class_<Data>("Data", module)
.def("__repr__", [](const Data& d){ return std::to_string(d.getValue()); });
请注意,我添加了该getValue
方法,因为value_
它是私有的。虽然取决于您的界面,但添加类似的东西可能更有意义Data::toString()
。
http://pybind11.readthedocs.io/en/stable/classes.html#binding-lambda-functions