Python: копирование объектов с помощью copy.deepcopy или запись моей собственной копии - PullRequest
3 голосов
/ 12 августа 2011

В настоящее время я использую модуль копирования для создания копии какого-либо имеющегося у меня объекта.

При определенных условиях (которые случаются часто) мне потребуется создать несколько копий исходного объекта, а затем изменить каждую из них по отдельности (поэтому я и использую копию).

Объект имеет несколько экземпляров различных типов данных (списки, целые, строки, другие классы), и копии должны иметь одинаковые значения, но я не уверен, будет ли он быстрее вызывать copy.deepcopy () или сделать что-то вроде

def copy(self, other):
   other.prop1 = self.prop1
   other.prop2 = self.prop2
   other.prop3 = self.prop3

Кто-нибудь сталкивался с этой проблемой, а затем решил, что лучше использовать модуль копирования, потому что это будет быстрее, чем все, что может придумать большинство людей?

PS: приведенный выше код не будет правильно копировать изменяемые объекты и те "другие классы", которые я упоминал. Возможно, это говорит о том, что Deepcopy - самый безопасный (и самый быстрый) маршрут?

1 Ответ

2 голосов
/ 12 августа 2011

Не пытаясь быть бойким, но не задумывались ли вы о профилировании своего кода? Документация здесь .Сравните copy.deepcopy с вашим собственным методом копирования.Таким образом, у вас будут точные данные о вашей конкретной ситуации, и вы сможете принять наилучшее решение - и подкрепите его, если кто-нибудь спросит, почему вы сделали это именно так!

...