使用pybind11在python中打印C ++类

时间:2018-03-07 13:56:44

标签: python c++ pybind11

让我们说一个人有这样一个班级

class Data
{
   public:
      Data(double d): value_(d) {};

   private:
      double value_;
 };

是否可以使用pybind11将其导出为Python

d = Data(3.14)
print(d)

显示3.14而不是

  

数据对象位于0x7fed8a8c3298

1 个答案:

答案 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