1

假设一个人有这样的课程

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

   private:
      double value_;
 };

是否可以使用 pybind11 在 Python 中导出它,这样

d = Data(3.14)
print(d)

显示 3.14 而不是类似

0x7fed8a8c3298 处的数据对象

4

1 回答 1

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

于 2018-03-07T14:36:28.903 回答