如何覆盖 Boost::Python 自动创建的文档字符串数据?

2024-02-14

我目前正在为 Python 开发一个基于 C++ 的模块。我发现 Boost::Python 非常适合我想要完成的任务。但是,我现在遇到了 Boost::Python 生成的文档字符串的一些问题。给出以下 Boost::Python 定义:

BOOST_PYTHON_MODULE(gcsmt)
{
class_<gcsmt::Units>("Units", "Sets the units used as input.", no_init)
    .def("PrintSupported", &gcsmt::Units::printSupported, "Print out all supported units.")
    .def("SetDefault", &gcsmt::Units::setDefaultUnit, "Sets the default unit to be used for inputs/outputs.")
    .staticmethod("PrintSupported")
    .staticmethod("SetDefault")
    .def(self_ns::str(self_ns::self))
    ;
}

如果我编译、在 Python 中加载模块并获取有关 gscmt.Units 类的帮助,则输出如下:

>>> help(gcsmt.Units)

Help on class Units in module gcsmt:

class Units(Boost.Python.instance)
 |  Sets the units used as input.
 |  
 |  Method resolution order:
 |      Units
 |      Boost.Python.instance
 |      __builtin__.object
 |  
 |  Methods defined here:
 |  
 |  __reduce__ = <unnamed Boost.Python function>(...)
 |  
 |  __str__(...)
 |      __str__( (Units)arg1) -> object :
 |      
 |          C++ signature :
 |              _object* __str__(gcsmt::Units {lvalue})
 |  
 |  ----------------------------------------------------------------------
 |  Static methods defined here:
 |  
 |  PrintSupported(...)
 |      PrintSupported() -> None :
 |          Print out all supported units.
 |      
 |          C++ signature :
 |              void PrintSupported()
 |  
 |  SetDefault(...)
 |      SetDefault( (UnitType)arg1, (str)arg2) -> None :
 |          Sets the default unit to be used for inputs/outputs.
 |      
 |          C++ signature :
 |              void SetDefault(gcsmt::unitType,std::string)
 |  
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |  
 |  __init__ = <built-in function __init__>
 |      Raises an exception
 |      This class cannot be instantiated from Python
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from Boost.Python.instance:
 |  
 |  __dict__
 |  
 |  __weakref__
 |  
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from Boost.Python.instance:
 |  
 |  __new__ = <built-in method __new__ of Boost.Python.class object>
 |      T.__new__(S, ...) -> a new object with type S, a subtype of T

虽然输出的许多文档对我作为开发人员来说很有价值,但大多数文档对于最终用户来说都是噪音,甚至更糟糕的是,令人困惑。 (例如,我的用户不关心给定方法的 C++ 签名是什么,也不需要查看方法解析顺序或显示的其他隐藏方法)。有什么方法可以覆盖并减少 Boost::Python 设置的文档的级别/详细程度吗?理想情况下,我希望我的文档看起来像这样:

>>> help(gcsmt.Units)

Help on class Units in module gcsmt:

class Units
 |  Sets the units used as input.
 |  
 |  PrintSupported() -> None :
 |      Print out all supported units.
 |  
 |  SetDefault( (UnitType)arg1, (str)arg2) -> None :
 |      Sets the default unit to be used for inputs/outputs.

  • Use the boost::python::docstring_options类来定义自动创建的文档字符串选项。
  • All def函数将文档字符串作为最后一个参数。
  • All class_定义将类文档字符串作为最后一个参数

I.e.:

using boost::python;
BOOST_PYTHON_MODULE(foo)
{
  // This will enable user-defined docstrings and python signatures,
  // while disabling the C++ signatures
  docstring_options local_docstring_options(true, true, false);

  class_<Bar>("Bar", init<>(), "Bar class" /* class docstring here */ )
    .def("foobar", &Bar::foobar, "foobar function" /* function docstring here */);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何覆盖 Boost::Python 自动创建的文档字符串数据? 的相关文章

  • 驱蚊程序?

    不 我认真的 最近 我读到 当电脑的压电蜂鸣器以一定频率振动时 声音可以驱赶蚊子 真的吗 如何以编程方式访问 PC 蜂鸣器 而不是扬声器 最好使用 C 我不知道有没有蚊子 但我的头疼得要命 啊啊 using System Runtime I
  • Python 对象初始化错误。或者我误解了对象的工作原理? [复制]

    这个问题在这里已经有答案了 1 import sys 2 3 class dummy object 4 def init self val 5 self val val 6 7 class myobj object 8 def init s
  • Django外键:获取相关模型?

    是否可以通过外键字段本身获取外键的相关模型 例如 如果我有 3 个模型 class ModelA models Model field1 models CharField max length 10 class ModelB models
  • 在 C# 中给定周数和年份,计算一周的开始和结束日期(基于 ISO 规范)

    我需要生成一份报告 显示一年中的 52 周 或某些年份的 53 周 及其开始日期和结束日期 有一个 ISO 规范可以做到这一点 但看起来非常复杂 我希望有人知道在 C 或 Visual Basic 中执行此操作的方法 实际上适用于 Visu
  • Django:上传前调整图像大小

    我想调整图像大小 Pillow 在上传之前 我在下面编写了代码但不起作用 并得到错误 myapp list 处的属性错误 坚定的 请求方式 POST 请求网址 http 127 0 0 1 8000 myapp list http 127
  • OpenCV:处理每一帧

    我想使用 OpenCV 编写一个跨平台应用程序进行视频捕获 在所有示例中 我发现来自相机的帧是使用抓取功能进行处理并等待一段时间 我想处理序列中的每一帧 我想定义自己的回调函数 每次当一个新帧准备好处理时都会执行该函数 例如直播对于 Win
  • BlueZ D-Bus C,应用 BLE

    我正在尝试编写一个应用程序来搜索附近的蓝牙设备并与它们通信 我的应用程序将用 C 语言编写 并打算在 Linux 下工作 是否有通过 C 中的 D Bus 使用 BlueZ 的教程或示例 此应用程序的目的是从 BLE 中的文件发送数据 你能
  • Django 中同一个模型的多个多对多关系

    给定以下具有两个多对多关系的模型 class Child models Model name models CharField max length 80 class Foo models Model bar models ManyToMa
  • 允许使用 AutoMapper 或类似工具映射动态类型吗?

    我已经开始使用https github com robconery massive https github com robconery massive对于一个项目 我想知道是否有任何映射工具可以支持动态到静态类型的映射 我以前使用过 Au
  • 导入pytorch时,未安装microsoft Visual C++ Redistributable

    我在一台带有 GPU 的 Windows 机器上工作 我已经在 conda 环境中安装了 pytorch conda install pytorch torchvision cudatoolkit 10 1 c pytorch 然后我运行
  • FileAllowed 不显示错误消息

    我正在使用 WTForms 我正在对文件上传应用验证 并将其限制为仅 jpg png 和 pdf 格式 但是 如果我输入不正确 则不会出现错误消息 我按照这个教程https flask wtf readthedocs io en stabl
  • 隐式类型转换 - 编译器错误

    这个问题与this https stackoverflow com questions 3529449 can i make the ternary operator treat my class like a bool问题 下面的代码在V
  • 以编程方式连接和断开 USB,“无需拔出和重新插入”

    我需要以编程方式连接和断开 USB 也就是说 我已经插入了USB设备 我需要使用 C NET 应用程序传输文件 该应用程序将监视特定文件夹并将文件从该文件夹传输到 USB 驱动器 我需要在文件传输后断开 USB 设备的连接 并在需要时连接
  • 通过 Tweepy 在 Twitter 上更新状态时的回溯

    我一直在尝试使用 Twitter 在 Twitter 上发布我的 Rpi 读数tweepy 但首先我想检查一下是否tweepy本来可以正常工作 但事实并非如此 我正确安装了软件包 但是当我尝试运行简单的代码来发布某些内容时 出现错误 是的
  • C++ 从文件中读取字符串

    我试图将字符串直接存储到一个文件中 以便稍后在 C 中读取 基本上 对于整个范围 我试图将带有字符串变量的对象数组存储在文件中 并且这些字符串变量将通过类似 object 的内容读取 0 字符串 然而 每次我尝试读取字符串变量时 系统都会给
  • 绑定未正确更新用户控件属性 MVVM

    编辑 删除旧代码 我将它放在 MainWindow xaml 上
  • 警告从 lambda 返回捕获的引用

    我尝试使用 lambda 有条件地将引用绑定到两个变量之一 int foo bar int choice gt int if true some condition return foo else return bar 这会在 clang
  • Mac 上的 PythonXY?

    如何在 Mac OS X Lion 上安装 Python 我开始了 它应该能够通过 macports 但无论如何我找不到 mac ports 网站上所述的端口 pythonXY 我对 MAC 和 pythonXY 都不太了解 但在 pyth
  • vtkPythonAlgorithm 控制管道执行

    我正在尝试用 python 编写一个 vtk 过滤器ProjectDepthImage进行投影不是问题 它控制 vtk 管道的执行 基本上 我对 UserEvent 有一个回调 当用户在渲染窗口处于活动状态时按下 u 键时会触发该回调 这将
  • 将 Web 场迁移到 ASP.NET 运行时版本 4,同时保持会话

    我们已将 Web 应用程序从 net 运行时 2 v 3 5 迁移到 net 运行时 4 v 4 5 我有一个部署问题 我们的 sessionstate 服务器是一个 stateserver 并在单独的服务器上运行框架 2 中的 aspne

随机推荐

  • 当主体可以相对定位时,如何计算 dom 元素的页面位置?

    当我将主体设置为具有 39 像素边距的相对定位元素 我正在为页面顶部的工具栏腾出空间 时 我有一个奇怪的错误开始出现 无论如何 如果您查看大多数网站如何告诉您计算页面元素位置 您将看到如下代码 function getPos elt var
  • Chrome android 高度/滚动问题与页脚和地址栏

    这是我遇到的一个有趣的情况 您正在使用 Android 版 Chrome 当您滚动正文时 地址栏会消失并隐藏 伟大的 现在您想要向页面添加一个固定在底部的页脚 您执行以下操作 html margin 0 padding 0 height 1
  • 画布 ArcTo 混乱

    所以我再次处理环形扇区 这不是我的强项 我可以使用 arc画布上的方法很好 问题来自于需要我的弧线成为路径的一部分 例如 ctx save ctx arc centerX centerY radius startAngle endAngle
  • 使用面向 Net Standard 的 DotNet Core 创建 Azure WebJob 失败并出现错误

    我有一个 dot net core 控制台应用程序 我想在 Azure 中作为 webjob 运行 当它尝试执行时 我在日志中看到 错误 找不到依赖项清单中指定的程序集 程序包 Microsoft DotNet InternalAbstra
  • 简单的 jQuery、PHP 和 JSONP 示例?

    我面临着同源策略问题 通过研究该主题 我发现对于我的特定项目来说 最好的方法是使用 JSONP 来执行跨源请求 我一直在读IBM 的这篇关于 JSONP 的文章 http www ibm com developerworks library
  • R 中多个条件的高效条件求和

    我正在努力寻找解决以下问题的有效解决方案 我有一个大型的已处理数据框 大约有 8 列和 80000 行 通常包含多种数据类型 如果满足大数据框中的条件 我想创建一个新的数据框 其中包含一列的总和 想象一下原始数据帧的头部看起来像这样 yea
  • 有开源的pastebin吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我经常编写 wiki 页面或设置需要与其他开发人员共享的配置文件 是否有任何可以安装在您自己的网络中的
  • 访问表达式树中与子项(列表)相关的属性

    我为我的实体创建了一个存储库Master 在存储库中 我有一个Get使用 Entity Core 通过 Id 获取实体的方法 该方法接收 public TEntity Get object id params Expression
  • 仅将一个文件夹重定向到 HTTPS,将所有其他文件夹重定向到 HTTP

    我提前向您道歉 因为我问了一些已经在 SO 上多次回答过的问题 但我无法修改任何答案以适用于这种情况 我有一个 secure 文件夹 需要将其重定向到 HTTPS 该文件夹之外的所有内容都应重定向到 HTTP 我计划使用绝对链接在我的网站中
  • 谷歌认证流程

    我正在尝试编写一个本机应用程序来访问用户的谷歌日历 我正在尝试使用谷歌提供的示例来获得身份验证 但它似乎从未触发身份验证功能 private void Window Initialized object sender EventArgs e
  • PySerial 从 Arduino 读取线路的延迟

    我正在使用带有基本 DigitalReadSerial 设置的 arduino uno 如下所述 http arduino cc en Tutorial DigitalReadSerial http arduino cc en Tutori
  • 如何合并两个具有不同日期时间索引的 pandas 时间序列对象?

    例如 我有两个不相交的时间序列对象 ts1 Date Price 2010 01 01 1800 0 2010 01 04 1500 0 2010 01 08 1600 0 2010 01 09 1400 0 Name Price dtyp
  • 创建 dag run 时将参数传递给 Airflow Experimental REST api

    看起来 Airflow 有一个实验性的 REST api 允许用户使用 https POST 请求创建 dag 运行 这太棒了 有没有办法通过 HTTP 将参数传递给 create dag 运行 从官方文档来看 发现here https a
  • 为什么我无权写入外部存储上的应用程序目录?

    TL DR 问题摘要 我的 Android 应用程序尝试write到应用程序的外部存储目录在 SD 卡上 它失败了权限错误 但是相同的代码 方法 提取到最小的测试应用程序中 会成功 由于我们的目标 API 级别包括 KitKat 及更高版本
  • Visual Studio 2019 - 错误 MSB8020:找不到 Visual Studio 2013 的构建工具

    这是GitHub https github com brookhong KeyCastOW我尝试使用的页面msbuild exe只是它抛出以下错误 1 gt Build started Project keycastow Configura
  • Android 蓝牙accept() / connect() 与已配对的设备

    我在通过蓝牙连接两个 Android 设备时遇到问题 只有当它们之前已配对时才会出现这种情况 我运行一个作为服务器 另一个作为客户端 以下是服务器端的操作顺序 检查各种蓝牙状态 适配器可用 已启用等 使用我选择的预定义UUID 调用list
  • easy_install pycrypto 的问题

    我正在尝试使用 easy install 在 osx 上安装 pycrypto 但出现以下错误 easy install pycrypto Searching for pycrypto Reading http pypi python or
  • Datagrid - 滚动将水平而不是垂直地裁剪图像

    我需要反转 DataGrid 上的列 行 请参阅WPF 水平数据网格 https stackoverflow com questions 4132829 wpf horizontal datagrid and 旋转数据网格 https ro
  • 计算 modbus RTU 3.5 字符时间

    我是 Modbus 新手 正在使用 Modbus RTU 开发应用程序 我想知道如何找出RTU消息帧分离时间 在Modbus RTU规范中 它提到了3 5个字符时间 但是没有更多关于如何决定这个间隔的数据 计算分离时间的步骤是什么 看看第1
  • 如何覆盖 Boost::Python 自动创建的文档字符串数据?

    我目前正在为 Python 开发一个基于 C 的模块 我发现 Boost Python 非常适合我想要完成的任务 但是 我现在遇到了 Boost Python 生成的文档字符串的一些问题 给出以下 Boost Python 定义 BOOST