使用 pybind11 在 python a C++ class 中打印
Printing in python a C++ class using pybind11
假设一个人有这样一个 class
class Data
{
public:
Data(double d): value_(d) {};
private:
double value_;
};
是否可以使用 pybind11 在 Python 中导出它,这样
d = Data(3.14)
print(d)
显示 3.14 而不是
Data object at 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
假设一个人有这样一个 class
class Data
{
public:
Data(double d): value_(d) {};
private:
double value_;
};
是否可以使用 pybind11 在 Python 中导出它,这样
d = Data(3.14)
print(d)
显示 3.14 而不是
Data object at 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