pybind11 && c++类封装(第一篇)
c++类封装
在Python中使用C++类,我们可以使用pybind11库来封装C++类。以下是一个简单的示例,演示了如何在Python中使用一个简单的C++类: #include <pybind11/pybind11.h> class MyClass { public: MyClass(int value) : m_value(value) {} int getValue() const { return m_value; } void setValue(int value) { m_value = value; } private: int m_value; }; namespace py = pybind11; PYBIND11_MODULE(my_module, m) { py::class_<MyClass>(m, "MyClass") .def(py::init<int>()) .def("get_value", &MyClass::getValue) .def("set_value", &MyClass::setValue); } 在上面的示例中,我们定义了一个简单的C++类MyClass,它包含一个整数成员变量和两个成员函数getValue和setValue。然后,我们使用pybind11库来将这个类封装为一个Python模块my_module,并在Python中使用它。
在Python中,我们可以这样使用这个封装过的C++类:
import my_module # 创建一个 MyClass 实例 obj = my_module.MyClass(42) # 调用成员函数 print(obj.get_value()) # 输出: 42 obj.set_value(100) print(obj.get_value()) # 输出: 100 通过这种方法,我们可以在Python中使用C++类,并直接调用其成员函数。这种方法对于将现有的C++代码集成到Python中非常有用,同时也提供了更高效的性能。