派生Python对象的深拷贝

4 投票
1 回答
1016 浏览
提问于 2025-04-16 04:07

我在Python中有一个对象,它是从 QtGui.QGraphicsPixmapItem 这个类派生出来的,里面有一些基本的属性和方法。当我对这个对象的引用使用 deepcopy 进行深拷贝时,尝试使用这个拷贝时却出现了一个错误,提示说 underlying C/C++ object has been deleted,意思是底层的C/C++对象已经被删除了。我之前也遇到过这个错误,那次是因为我在 __init__ 方法中没有调用基类的构造函数,所以我猜这个错误是因为 QtGui.QGraphicsPixmapItem 没有被正确拷贝。

我该怎么做才能解决这个问题呢?我知道有一个 __deepcopy__ 方法可以用来处理这个情况。

1 个回答

4

QGraphicsPixmapItem 是不能被复制的。它是从 QGraphicsItem 这个类继承来的,而 QGraphicsItem 是用 Q_DISABLE_COPY 这个宏来声明的。这个宏的作用和 QObject 类似,也是用来禁止复制的。文档里对这个有更详细的解释

撰写回答