使从 boost-python 类继承的 Python 类可复制

2023-12-28

我有一个继承自 boost-python 类的类:

class Magnet(CMagnet):   # CMagnet is a C++ based boost-python class
    def __init__(self):
        CMagnet.__init__(self)

    def python_method(self):
        ...

在 CMagnet 的 C++ 实现中,我使用了以下代码1 https://mail.python.org/pipermail/cplusplus-sig/2009-May/014505.html,如发布于2 https://stackoverflow.com/questions/4696966/copying-a-boost-python-object.

我现在遇到以下问题:当我执行以下操作时:

magnet = Magnet()
magnet_2 = copy.deepcopy(magnet)

then magnet属于类型Magnet, magnet_2然而,它的类型是CMagnet。我也需要它的类型Magnet。它缺乏一切Magnet方法。如何让 deepcopy 复制(并返回)整个内容Magnet对象而不仅仅是一个副本CMagnet part?


由于您没有提供最小的、可重复的示例 https://stackoverflow.com/help/minimal-reproducible-example我无法快速检查以下肮脏的把戏是否有效,但我认为它应该有效。

您可以添加一个__deepcopy__()方法到您的类,将工作委托给底层boost-python对象,然后修复结果的类型。

def __deepcopy__(self, memo):
    result = super().__deepcopy__(memo)
    result.__class__ = self.__class__
    return result

如何让 deepcopy 复制(并返回)整个 Magnet 对象,而不仅仅是 CMagnet 部分的副本?

请注意,generic__deepcopy__()函数复制输入对象的所有字段,因此只是类型错误 - 复制对象的内容应该是正确的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使从 boost-python 类继承的 Python 类可复制 的相关文章

随机推荐

  • jQuery:检查下一个元素是否存在

    有没有办法检查下一个元素是否存在 检查我的代码 if people making of mask ul li current next li null alert Exists else alert Dont exists 我究竟做错了什么
  • 在 C++ 中通过 OpenCV 以非常小的步长平移图像

    我正在以非常小的步长进行图像翻译 例如按 1 1024 在列中翻译 考虑我有以下图像 我在 opencv 中使用 Mat 创建图像 类型为 CV 64F 255 0 0 0 现在 通过在 1 1024 列中进行翻译 我期望得到以下结果 25
  • Eclipse 不使用添加类路径变量中的 jar

    我添加了一个指向 jar 缓存的类路径变量 通过 eclipse 的构建路径 虽然此文件夹显示在 Eclipse 的文件夹视图中 但由于某种原因无法识别其中包含的 jar 例如 当我导入缓存中的 jar 中存在的类 以及添加的类路径变量 时
  • div 内文本中的新行

    当我放置通过 ajax 调用加载的文本时 我遇到了一个小问题 我从文本区域获取内容并将其存储在数据库中 当我想在 div 中显示文本时 它不尊重新行 因此所有文本都是连续的 下面的代码展示了一个小例子 function buttonA cl
  • Eclipse 中“现有连接被远程主机强制关闭”

    我一直在使用 Eclipse 构建 Android 应用程序 并在我的 HTC One X 上测试它们 我从 HTC Sync 安装了驱动程序 并且 Eclipse 是最新的 最近 此连接完全停止工作 计算机 运行 Windows 8 Pr
  • 禁用和启用后退按钮

    在应用程序中 我正在使用 GPS 查找用户位置 在异步预执行方法中 我正在显示一个吐司 我希望在显示吐司时应禁用后退按钮 找到位置后 我想在执行后启用后退按钮 禁用我使用过的后退按钮 但这不起作用 OnKeyListener mainScr
  • 使用 JWT 保护 WebAPI

    我正在尝试编写一个移动应用程序 该应用程序将从基于 webapi 的站点获取数据 该站点应通过 ACS 进行保护 因为可能有多个身份提供商 我的移动应用程序当前正在查询以下网址获取 IP 列表 然后 我允许用户选择 IP 然后使用 Web
  • 错误:R 无法连接到 MySQL

    我昨天将MySQL更新到最新版本8 0 11 并尝试使用RMySQL连接MySQL 但它不起作用 我找不到任何解决方案 My code library RMySQL con lt dbConnect MySQL user hello pas
  • 如何替换va_list中的值?

    我想做一些关于 va list 的练习 这是我的代码 int myscanf char fmt va list ap va start ap fmt vfscanf stdin fmt ap va end ap int main int a
  • 通过 iPhone 应用程序在 Facebook“提要”上发布图片

    我正在使用 ASIHTTPRequest 来处理 Facebook 图形 API 这是我最近在动态上发布图片的一次 所以如果我有一个 ASIFormDataRequest request ASIFormDataRequest request
  • 函数式语言中折叠/归约的实际使用

    Fold aka reduce 被认为是一个非常重要的高阶函数 Map可以表示为fold see here http en wikipedia org wiki Fold 28higher order function 29 List fo
  • 如何在调用下一个回调函数之前添加延迟?

    我正在尝试制作一个 javascript 横幅 我在一个 div 中有 3 个图像 id 为 img1 img2 img3
  • 模板非类型参数

    14 3 2 非类型 非模板模板参数的模板参数应为以下之一 指定具有静态存储持续时间的对象的地址的常量表达式 5 19 外部或内部链接或具有外部或内部链接的功能 在下面显示的代码中 我无法理解为什么不允许 name2 和 name3 作为非
  • Node.js - 将 https.request() 与内部 CA 一起使用

    我该向谁获取 https request 来信任我的内部签名服务器证书 以下是我在 v0 10 25 中运行的代码的快速示例 var options hostname encrypted mydomain local port 443 pa
  • OpenCL 找不到平台?

    我正在尝试将 C API 用于 OpenCL 我已经安装了 NVIDIA 驱动程序 并且已经测试可以运行提供的简单向量加法程序here http www thebigblob com getting started with opencl
  • 实体框架在循环中插入存储过程

    尝试使用实体框架在循环中执行插入存储过程 如下所示 var context new Entities var items context GetAllItems ToList foreach var item in items Other
  • 标签标签中的“for”是什么?

    刚刚跑过一个forHTML 标签中的参数
  • 参数字典包含参数的空条目

    我有两个视图页面使用相同的控制器和模型作为更改页面布局的方式 但我在显示第二个页面时遇到问题 这是我的错误消息 The parameters dictionary contains a null entry for parameter id
  • C++ 从基类指针访问派生类成员

    如果我分配一个类的对象Derived 基类为Base 并将指向该对象的指针存储在指向基类的变量中 我如何访问该对象的成员Derived class 这是一个例子 class Base public int base int class De
  • 使从 boost-python 类继承的 Python 类可复制

    我有一个继承自 boost python 类的类 class Magnet CMagnet CMagnet is a C based boost python class def init self CMagnet init self de