相当于 pybind11 中的 boost::p ython py::scope().attr()
Equivalent to boost::python py::scope().attr() in pybind11
我正在将一些代码从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");
}
相关文章:
- 相当于 pybind11 中的 boost::p ython py::scope().attr()
- 如何修复"error: ‘_1’ was not declared in this scope"?
- "local scope"中的 C++ 初始化静态变量
- fopen_s 未在 scope(C++:codeblocks ) 中声明
- 使用 scope 运算符 (::) 引用另一个文件中的类
- 类中的数组变量C++导致"was not declared in this scope"实现文件的一个函数中错误,但在构造函数中不会导致错误
- 如何解决"cout was not declared in this scope"错误?
- 为什么当"::"的行为不像运算符时被称为'scope resolution operator'?
- 为什么程序显示我"was not declared in this scope"?
- C++标准在[basic.scope.hiding]中"same scope"到底意味着什么?
- 为什么我会收到"getuid was not declared in that scope"错误?
- 即使包含 <time.h 后仍"‘CLOCK_PER_SEC’ was not declared in this scope"错误>
- 为什么我们需要 [basic.scope.class]/2?
- 如何修复'PCH Warning: header stop not at file scope'
- 运算符方法和返回对象"out-of-scope"?
- 我正在接受"Error: string was not declared in this scope"
- python boost scope 会导致 NoneType 错误
- 为什么我会得到"Invalid use of :: (scope resolution operator)?"
- std::bind and stack-use-after-scope
- C++ 我一直在"was not declared in this scope error"