【发布时间】:2022-01-23 10:38:41
【问题描述】:
我试图让pybind11 启动并运行,但遇到了一些奇怪的语法:
#include <pybind11/pybind11.h>
int add(int i, int j) {
return i + j;
}
PYBIND11_MODULE(example, m) {
m.doc() = "pybind11 example plugin"; // optional module docstring
m.attr("the_answer") = 42;
m.def("add", &add, "A function which adds two numbers");
}
我认为PYBIND11_MODULE 是一个宏,pybind11 应该执行代码块内的所有内容以设置 Python 模块。但是,m.doc() = ... 和 m.attr("the_answer") = 42 的语法看起来很奇怪。虽然代码确实在我的机器上编译。我的问题是,它们是什么,它们有名字吗?
【问题讨论】:
-
我假设函数返回对象的references?并且这些对象有一个重载的赋值运算符?您是否查看过 PyBind 文档以了解它对这些函数的描述以及它们返回的内容?
-
我从来不知道你可以这样设置。看来你的预感是对的。你介意把它写出来作为答案让我接受吗?