Implementing deepcopy

Mr.Rech andrea.riciputi at gmail.com
Wed Dec 7 23:03:26 EST 2005


Thanks for your answer. Since perfomances are not an issue in my case I
think I'd stay with copy.copy(). In this way I'm not required to know
in advance the object type, and I can implement a __deepcopy__ method
for my own classes as follows:

>>> def __deepcopy__(self, memo = {}):
            new = self.__class__.__new__(self.__class__)
            memo[id(self)] = new
            for key, val in self.__dict__.iteritems():
                 try:
                     setattr(new, key, copy.deepcopy(val, memo))
                 except TypeError:
                     setattr(new, key, copy.copy(val))
            return new

The method is quite general (at least I hope so), and can be easily
inherited by all the subclasses without any major change. Is that
right? Am I missing something here? Any better way to implement this?

Thanks again,
 Andrea




More information about the Python-list mailing list