让我们说一个人有这样一个班级
class Data
{
public:
Data(double d): value_(d) {};
private:
double value_;
};
是否可以使用pybind11将其导出为Python
d = Data(3.14)
print(d)
显示3.14而不是
数据对象位于0x7fed8a8c3298
答案 0 :(得分:2)
导出时可以执行以下操作:
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