object.__deepcopy__
Позволяет определить действие при глубоком копировании экземпляра.
object.__deepcopy__(self, memo)
-> копия экземпляра
self -- Ссылка на экземпляр.
memo -- Словарь для реконструкции графа объектов.
memo -- Словарь для реконструкции графа объектов.
Данный метод позволяет переопределить поведение при попытке применения функции
deepcopy()
из модуля copy
, производящей глубокое копирование, к экземпляру класса.Внимание
Реализация должна создавать глубокую копию объекта. Для этого ей следует вызвать
copy.deepcopy()
, где первый аргумент — это сам объект, а второй — словарь для реконструкции графов сложных объектов (словарь должен хранить соотношения идентификаторов объектов к объектам-копиям). from copy import deepcopy
class MyClass:
def __init__(self):
# Допустим в some_attr сложный объект, включающий в себя другие объекты.
self.some_attr = ...
def __deepcopy__(self, memo):
print('deep copying ...')
my_copy = type(self)()
memo[id(self)] = my_copy
my_copy.some_attr = deepcopy(self.some_attr, memo)
return my_copy
my_object = MyClass()
my_object_copy = deepcopy(my_object) # deep copying ...
Синонимы поиска: object.__deepcopy__, object, __deepcopy__
В разделе «object (объект)»:
file (файл)
object.__add__
object.__bool__
object.__call__
object.__ceil__
object.__class__
object.__cmp__
object.__contains__
object.__copy__
object.__del__
object.__delattr__
object.__delete__
object.__delitem__
object.__delslice__
object.__dir__
object.__enter__
object.__eq__
object.__exit__
object.__floor__
object.__format__
object.__ge__
object.__get__
object.__getattr__
object.__getattribute__
object.__getitem__
object.__getslice__
object.__getstate__
object.__gt__
object.__hash__
object.__init__
object.__init_subclass__
object.__iter__
object.__le__
object.__len__
object.__lt__
object.__missing__
object.__ne__
object.__new__
object.__next__
object.next
object.__nonzero__
object.__qualname__
object.__rcmp__
object.__repr__
object.__reversed__
object.__set__
object.__setattr__
object.__setitem__
object.__set_name__
object.__setslice__
object.__setstate__
object.__slots__
object.__str__
object.__sub__
object.__subclasses__
object.__unicode__
property (свойство)
Protocols (протоколы)
slice (срез)
Встроенные исключения
На заметку
В разделе «События» можно узнать о надвигающихся событиях мира Python, а также поделиться своими. Если вы являетесь организатором встречи/конференции/спринта, зарегистрируйте это событие в указанном разделе, чтобы о нём узнали все желающие.