python - 等效于 pybind11 中的 boost::python py::scope().attr()
问题描述
我正在将一些代码boost::python
从pybind11
.
我有一门课classA
,我很容易把它包起来:
PYBIND11_MODULE(module, m) {
m.doc() = "pybind11 module";
py::class_<classA>(m, "classA")
.def(...
...
;
}
这非常有效。我面临的问题是,显然这个类在过去被称为不同,比如说classB
. 为了保持向后兼容性(在boost::python
代码中),原始开发人员做了:
py::scope().attr("classB") = py::scope().attr("classA");
有没有与此等效的pybind11
?谢谢!
解决方案
您可以使用 names:m.attr("C") = m.attr("B");
或 variable name class_A
,在这种情况下:
class A
{
public:
void hello()
{
std::cout << "world" << std::endl;
}
};
PYBIND11_MODULE(example, m) {
py::class_<A> class_A(m, "A");
class_A.def(py::init<>()).def("hello", &A::hello);
m.attr("B") = class_A;
m.attr("C") = m.attr("B");
}
推荐阅读
- php - Laravel 使用模型中的自定义方法进行采摘
- workflow - 在 camunda 中完成工作流执行后如何获取变量?
- r - 在 R 中对相似的文本进行分组
- python-3.x - 如何使用 aiohttp 应用程序从 NSQ 通道读取消息
- javascript - Javascript 中的简单数学函数帮助
- java - spring boot 将 json 对象发布到 httpclient 并获取响应
- android - 创建时不得附加 ViewHolder 视图
- linq - 可查询的
返回单个记录 - ip - 如何增加IP地址
- javascript - Angular 6的d3鼠标悬停事件