我从https://github.com/pybind/cmake_example开始,在main.cpp
中添加了一个简单的结构Value
:
struct Value {
int a, b;
};
在python中暴露于:
py::class_<Value> cl(m, "Value");
cl.def(pybind11::init<>());
cl.def_readwrite("a", &Value::a);
cl.def_readwrite("b", &Value::b);
我的问题是Value的任何示例都是不可扩展的,我希望通过仅在运行时可用的信息在python中完成这个结构:
>>> import cmake_example
>>> val = cmake_example.Value()
>>> val.a = 5
>>> val.b
0
>>> val.c = 30
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'cmake_example.Value' object has no attribute 'c'
有没有办法规避这种行为?
1条答案
按热度按时间hc2pp10m1#
绑定类时需要添加
py::dynamic_attr()
:参见pybind11文档。