pybind11 && c++类封装(第一篇)

Libra / 2024-08-22 / 原文

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中非常有用,同时也提供了更高效的性能。