首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使从boost-python类继承的Python类可复制

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

Stack Overflow用户
提问于 2019-05-24 19:46:47
回答 1查看 130关注 0票数 7

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

代码语言:javascript
复制
class Magnet(CMagnet):   # CMagnet is a C++ based boost-python class
    def __init__(self):
        CMagnet.__init__(self)

    def python_method(self):
        ...

在CMagnet的C++实现中,我使用了1中的代码,如2中所述。

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

代码语言:javascript
复制
magnet = Magnet()
magnet_2 = copy.deepcopy(magnet)

magnet的类型为Magnet,而magnet_2的类型为CMagnet。我需要它也是Magnet类型的。它缺少所有的Magnet方法。如何让deepcopy复制(并返回)整个Magnet对象,而不仅仅是CMagnet部分的副本?

EN

回答 1

Stack Overflow用户

发布于 2019-06-05 00:10:27

因为您没有提供Minimal, Reproducible Example,所以我不能快速检查以下肮脏的技巧是否有效,但我认为它应该有效。

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

代码语言:javascript
复制
def __deepcopy__(self, memo):
    result = super().__deepcopy__(memo)
    result.__class__ = self.__class__
    return result

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56292040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档