如何让 Pybind11 位置参数名称显示在 help() 上?
How to have Pybind11 positional-argument names show up on help()?
double foo(int x, int y, double dx, double dy) {...};
PYBIND11_MODULE(mymodule, m) {
m.doc() = "Module docstring";
m.def("foo", &foo, "Function docstring");
}
安装后,帮助页面不包含位置参数名称,而是替换为 arg<#>
:
>>> from mymodule import foo
>>> help(foo)
Help on built-in function foo in module mymodule:
foo(...) method of builtins.PyCapsule instance
foo(arg0: int, arg1: int, arg2: float, arg3: float) -> float
Function docstring
你需要传递他们的名字。以下是如何操作的两个版本:
double foo(int x, int y, double dx, double dy) {...};
PYBIND11_MODULE(mymodule, m) {
m.doc() = "Module docstring";
// First version:
using namespace pybind11::literals;
m.def("foo", &foo, "Function docstring", "x"_a, "y"_a, "dx"_a, "dy"_a);
// Second version:
m.def("foo", &foo, "Function docstring", py::arg("x"), py::arg("y"), py::arg("dx"), py::arg("dy"));
}
这两个版本是相同的 - 第一个是第二个使用用户定义文字的语法糖。
double foo(int x, int y, double dx, double dy) {...};
PYBIND11_MODULE(mymodule, m) {
m.doc() = "Module docstring";
m.def("foo", &foo, "Function docstring");
}
安装后,帮助页面不包含位置参数名称,而是替换为 arg<#>
:
>>> from mymodule import foo
>>> help(foo)
Help on built-in function foo in module mymodule:
foo(...) method of builtins.PyCapsule instance
foo(arg0: int, arg1: int, arg2: float, arg3: float) -> float
Function docstring
你需要传递他们的名字。以下是如何操作的两个版本:
double foo(int x, int y, double dx, double dy) {...};
PYBIND11_MODULE(mymodule, m) {
m.doc() = "Module docstring";
// First version:
using namespace pybind11::literals;
m.def("foo", &foo, "Function docstring", "x"_a, "y"_a, "dx"_a, "dy"_a);
// Second version:
m.def("foo", &foo, "Function docstring", py::arg("x"), py::arg("y"), py::arg("dx"), py::arg("dy"));
}
这两个版本是相同的 - 第一个是第二个使用用户定义文字的语法糖。