Глубокая копия производного объекта Python - PullRequest
4 голосов
/ 14 сентября 2010

У меня в Python есть объект, полученный из QtGui.QGraphicsPixmapItem с несколькими базовыми атрибутами и методами. После вызова deepcopy для ссылки на этот объект я получаю сообщение об ошибке underlying C/C++ object has been deleted, когда пытаюсь использовать копию. Я получил эту ошибку раньше, и это произошло, когда я не вызывал конструктор базового класса в __init__, поэтому я предполагаю, что эта ошибка вызвана тем, что QtGui.QGraphicsPixmapItem не копируется.

Как мне указать это? Все, что я знаю, это то, что для этой цели существует метод __deepcopy__.

1 Ответ

3 голосов
/ 21 сентября 2010

QGraphicsPixmapItem не копируется.Он наследует QGraphicsItem, который объявлен с использованием макроса Q_DISABLE_COPY, который является тем же механизмом, который используется для QObjects для отключения копирования. Документация объясняет это немного лучше .

...