派生Python对象的深拷贝
我在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
类似,也是用来禁止复制的。文档里对这个有更详细的解释。