相当于 pybind11 中的 boost::p ython py::scope().attr()

Equivalent to boost::python py::scope().attr() in pybind11

本文关键字:scope attr py pybind11 中的 boost 相当于 ython      更新时间:2023-10-16

我正在将一些代码从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上是否有与此等效的? 谢谢!

在这种情况下,您可以使用名称:m.attr("C") = m.attr("B");或变量名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");
}