1.1.绑定类:
py::class_<A>(m, "A"[, py::dynamic_attr()]) //1.1.为C++类创建绑定[动态属性支持] py::class_<T>是模板类
.def(py::init<const std::string &>()) //2.1.包装构造函数(py::init()无参构造)
.def("setName", &A::setName) //2.2.包装其他函数
.def("getName", &A::getName)
.def_readwrite("name", &A::name) //3.1.包装public成员变量读写(包括const变量def(py::init<const string &>()))
.def_readonly("name", &A::name) //3.2.包装public成员变量只读
.def_property("name", &A::getName, &A::setName) //3.3.包装private成员变量读写
.def_property_readonly("name", &A::getName, &A::setName) //3.4.包装private成员变量只读
.def("__repr__",[](const A &a) {return a.name;}; //4.1.打印对象(类无__repr__定义)
1.2.静态成员:
class_::def_static() //1.1.静态成员函数绑定
class_::def_readwrite_static() //2.1.绑定public静态变量读写
class_::def_readonly_static() //2.2.绑定public静态变量只读
class_::def_property_static() //2.3.绑定private静态变量读写
class_::def_property_readonly_static() //2.4.绑定private静态变量只读
2.实例:
struct A {
A(const string &name) : name(name) { }
void setName(const string &name_) { name = name_; }
const string &getName() const { return name; }
std::string name;
};
#python
import example
p = example.A('Tom')
print(p) #<example.A object at 0x10cd98060>
p.getName() #u'Tom'
p.setName('Bob')
p.getName() #u'Bob'