# c++ 代码
#examplePet.cpp
#include <pybind11/pybind11.h>
namespace py = pybind11;
struct Pet {
Pet(const std::string &name) : name(name) { }
void setName(const std::string &name_) { name = name_; }
const std::string &getName() const { return name; }
std::string name;
};
PYBIND11_MODULE(examplePet, m) {
py::class_<Pet>(m, "Pet")
.def(py::init<const std::string &>())//对应c++类构造函数
.def("setName", &Pet::setName)
.def("getName", &Pet::getName);
}
# 编译
g++ -O3 -Wall -shared -std=c++11 -undefined dynamic_lookup $(python3 -m pybind11 --includes) examplePet.cpp -o examplePet$(python3-config --extension-suffix)
# 使用
>>> import examplePet
>>> p = examplePet.Pet("Molly")
>>> print(p)
>>> p.getName()
'Molly'
>>> p.setName("Charly")
>>> p.getName()
'Charly'
网友评论